Добрый день. Помогите, пожалуйста, разобраться с запросом. Ситуация такова: в базе имеется 2 таблицы с одинаковыми полями. К примеру, в таблице Table1 есть поле NAME, и в Table2 есть поле NAME. Каким образом можно вывести те строки из таблицы Table1, у которых значение поля NAME совпадает со значением поля NAME у Table2?
Пытался вывести таким образом:
SELECT * FROM table1 WHERE name = (SELECT name FROM table2)
Не работает, ибо подзапрос возвращает несколько строк, а не одну. Как быть?
Почитайте что такое inner и left/right join'ы. В вашем случае надо что-то типа такого:
SELECT table1.*, table2.* FROM table1
inner join TABLE2 on table1.name=table2.name
P.S. Могу чутка ошибиться в синтаксисе - давно не сиквелил :)
Про джоины всё правильно, но всё же предложу два альтернативных варианта:
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;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей