帮助sql查询

时间:2009-09-22 13:21:44

标签: sql

我正在寻找帮助为这种情况创建正确的SQL ...

两个表模型和序列简化

Model
-----
CODE | MAKE | MODEL

Serials
-------
CODE (FK) | SERIAL

我想检索MADE ='some value'的CODE,MAKE和SERIAL 我只想要不同的CODES ......

5 个答案:

答案 0 :(得分:1)

select distinct code, make, model from model inner join code on model.code = serials.code where model = 'some value';

答案 1 :(得分:1)

不确定这是不是你的意思,但你试过了吗?

SELECT DISTINCT code, make, serial
FROM model, serials
WHERE model.code = serials.code
AND make = 'some value'

答案 2 :(得分:1)

您的表的设置方式每个Code的Serials中会有多行,不是吗?如果是这样,则无法为单个代码获取 所有 序列号,而无需为该代码获取多行。这是你的意思,只是得到不同的代码?如果是这样,你不能这样做......但是否则......

try this:

Select Code, Make, Serial
From Model M
  Join Serials S
     On  M.code = S.code
Where Make = 'some value'

答案 3 :(得分:0)

select distinct Model.Code 
from Model JOIN Serials on Model.Code = Serials.Code 
where make = 'some value' and Serials.Serial not null

阅读其他答案的评论后进行编辑。

答案 4 :(得分:0)

假设代码为PRIMARY KEY(否则,您无法提及FK):

SELECT  code, make,
        (
        SELECT  serial
        FROM    serials
        WHERE   serials.code = model.code
        LIMIT 1
        )
FROM    model
WHERE   MAKE = 'some value'

这是MySQL语法。

当您有code的多个序列号时,需要定义要显示的序列,并在子查询中添加ORDER BY子句。

如果您有这些数据:

code  make         model
123   SOME VALUE   Ford Sierra

code  serial
123   1
123   2

,是否要显示序列12以及原因?