MYSQL запрос выбора на основе записей других таблиц - PullRequest
5 голосов
/ 14 ноября 2010

Я поставил это в тупик, так как я абсолютный новичок в MySql.

Вот основные принципы формирования двух таблиц

Идентификатор таблицы 1, product_id, product_name

Идентификатор таблицы 2, product_id, active

Теперь я знаю, как сделать оператор выбора для запроса результатов из одной таблицы, но когда мне нужно задействовать две, я теряюсь.Не уверен, что мне нужно использовать внутреннее соединение, левое соединение и т. Д.

Так как же я могу вернуть результаты product_id из таблицы 1, только если в таблице 2 активно?

Ответы [ 2 ]

4 голосов
/ 14 ноября 2010

Вы можете использовать JOIN (как указал Fosco), но вы можете сделать то же самое в предложении WHERE. Я заметил, что это немного более интуитивный метод, чем JOIN, особенно для тех, кто изучает SQL. Этот запрос объединяет две таблицы в соответствии с product_id и возвращает те продукты, которые являются активными. Я предполагаю, что "активный" - логический тип.

SELECT t1.*
FROM Table1 t1, Table2 t2
WHERE t1.product_id = t2.product_id AND t2.active = TRUE

W3Schools имеет хороший базовый учебник по различным видам JOIN. См. ВНУТРЕННЕЕ СОЕДИНЕНИЕ , ЛЕВОЕ СОЕДИНЕНИЕ , ПРЯМОЕ СОЕДИНЕНИЕ , ПОЛНОЕ СОЕДИНЕНИЕ .

3 голосов
/ 14 ноября 2010

Объединить две таблицы довольно просто:

select t1.* 
from Table1 t1
join Table2 t2 on t1.product_id = t2.product_id
where t2.active = 'Y'
...