Можно ли написать запрос SQL для возврата определенных строк, но затем объединить некоторые столбцы этих строк с другой таблицей? - PullRequest
0 голосов
/ 13 апреля 2010

У меня проблемы с тем, как написать этот запрос.

Гипотетическая проблема, аналогичная той, которую я пытаюсь решить:

Скажем, у меня есть таблица apples. Каждый apple имеет множество атрибутов, таких как color_id, variety_id и orchard_id, из которых они были выбраны.

color_id, variety_id и orchard_id все ссылаются на свои соответствующие таблицы: colors, varieties и orchards.

Теперь, скажем, мне нужно запросить все apples, которые имеют color_id = '3', что относится к yellow в таблице colors.

Я хочу каким-то образом получить это yellow значение из запроса.

Имеет смысл?

Вот что я пытался:

SELECT * FROM apples, colors.id WHERE color_id = '3'
LEFT JOIN colors ON apples.color_id = colors.id

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Вот как вы делаете объединение в целом.Он вернет все яблоки, независимо от того, указан цвет или нет:

SELECT * 
FROM apples a
LEFT OUTER JOIN colors c ON a.color_id = c.id

Если вы хотите только желтые яблоки, вероятно, это должно быть внутреннее соединение, так как вы требуете, чтобы a.color_id не был нулевым в вашемгде пункт:

SELECT * 
FROM apples a
INNER JOIN colors c ON a.color_id = c.id
WHERE a.color_id = 3

Обновление:

SELECT *  
FROM apples a 
INNER JOIN colors c ON a.color_id = c.id 
INNER JOIN orchards o ON a.orchard_id = o.id 
WHERE a.color_id = 3 and a.orchard_id = 5
1 голос
/ 13 апреля 2010
SELECT a.*, c.ColorName
FROM Apples a INNER JOIN Colors c ON a.color_id = c.color_id
WHERE c.color_id = 3
1 голос
/ 13 апреля 2010

Используйте этот SQL-запрос:

SELECT apples.*, color.name
FROM apples
JOIN colors ON apples.color_id = colors.id
WHERE colors.id = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...