Помогите с sql запросом - PullRequest
       12

Помогите с sql запросом

1 голос
/ 22 сентября 2009

Мне нужна помощь в создании правильного SQL для этого сценария ...

Модель с двумя столами и серийные номера упрощены

Model
-----
CODE | MAKE | MODEL

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

Я хочу получить КОД, СДЕЛАТЬ И ПОСЛЕДОВАТЕЛЬНЫЙ, где СДЕЛАТЬ = 'некоторое значение' Я только хочу разные КОДЫ, хотя ...

Ответы [ 5 ]

1 голос
/ 22 сентября 2009

То, как ваши таблицы кажутся настроенными, будет иметь несколько строк в последовательных кодах для каждого кода, не так ли? В этом случае невозможно получить все серийные номера для одного кода без получения нескольких строк для этого кода. Это то, что вы имели в виду, получив только разные коды? Если это так, вы не можете сделать это ... но в противном случае ...

try this:

Select Code, Make, Serial
From Model M
  Join Serials S
     On  M.code = S.code
Where Make = 'some value'
1 голос
/ 22 сентября 2009

Не уверен, что это то, что вы имеете в виду, но вы пробовали:

SELECT DISTINCT code, make, serial
FROM model, serials
WHERE model.code = serials.code
AND make = 'some value'
1 голос
/ 22 сентября 2009
select distinct code, make, model from model inner join code on model.code = serials.code where model = 'some value';
0 голосов
/ 22 сентября 2009

Предполагая, что код 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

, вы хотите показать серийный номер 1 или 2 и почему?

0 голосов
/ 22 сентября 2009
select distinct Model.Code 
from Model JOIN Serials on Model.Code = Serials.Code 
where make = 'some value' and Serials.Serial not null

Редактировать после прочтения комментария к другому ответу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...