SQL запрос к двум таблицам

201
15 декабря 2016, 15:56

Добрый день. Помогите, пожалуйста, разобраться с запросом. Ситуация такова: в базе имеется 2 таблицы с одинаковыми полями. К примеру, в таблице Table1 есть поле NAME, и в Table2 есть поле NAME. Каким образом можно вывести те строки из таблицы Table1, у которых значение поля NAME совпадает со значением поля NAME у Table2? Пытался вывести таким образом:

SELECT * FROM table1 WHERE name = (SELECT name FROM table2)

Не работает, ибо подзапрос возвращает несколько строк, а не одну. Как быть?

Answer 1

Почитайте что такое inner и left/right join'ы. В вашем случае надо что-то типа такого:

SELECT table1.*, table2.* FROM table1 
  inner join TABLE2 on table1.name=table2.name

P.S. Могу чутка ошибиться в синтаксисе - давно не сиквелил :)

Answer 2

Про джоины всё правильно, но всё же предложу два альтернативных варианта:

1: SELECT * FROM table1 WHERE name IN (SELECT name FROM table2);

2: SELECT a.*, b.* FROM table1 a, table2 b WHERE a.name = b.name;

READ ALSO
Решить задачу по SQL

Решить задачу по SQL

Помогите научиться решать задачи на SQL, вот я приведу пример 1 задачи, дайте исходники, чтобы я понял как их решать**Отчет за март 2011 года, в котором...

203
Создание MySQL

Создание MySQL

Попробовал сделать соединение через php, ошибок не вылезло, но и базы и таблицы не появилосьВот код:

131
Вывод из базы данных шести наибольших значений?

Вывод из базы данных шести наибольших значений?

Как вывести из базы данных шесть самых больших значений? Почему то вот это не работает и выводит в виде?

163