Подскажите пожалуйста как правильно написать запрос. Есть две таблицы Код (Text): table1 id name 1 Вася 2 Женя 3 Петя 4 Катя 5 Лена table2 id id_name param 1 1 aa 2 3 bb 3 2 cc 4 1 dd 5 1 ee 6 2 ff 7 1 gg 8 5 hh Вопрос как написать запрос, чтобы производить выборку из второй таблицы таким образом чтобы выдавал только те строки где есть повторения в поле id_name, и производил подстановку по этому полю из первой таблицы. Конкретно должно получиться следующее Код (Text): table2.id table2.id_name table1.name table2.param 1 1 Вася aa 3 2 Женя cc 4 1 Вася dd 5 1 Вася ee 6 2 Женя ff 7 1 Вася gg Вот такой запрос SELECT table2.id table2.id_name table1.name table2.param FROM table1, table2 WHERE table1.id=table2.id_name выдает все восемь строк, а нужно только те где встречаются повторения по полю id_name Подскажите как написать...
[sql] SELECT table2.id table2.id_name table1.name table2.param FROM table1, table2 WHERE table1.id=table2.id_name AND table2.id_name IN ( SELECT table2.id_name FROM table2 GROUP BY table2.id_name HAVING COUNT(table2.id_name) > 1 ) [/sql] такой запрос вроде работает. Но использование IN замедляет работу. Возможно ли как нибудь использовать JOIN вместо IN?
да. select * from t1, t2, (select id from t2 where...) t3 where только этим надо аккуратно пользоваться, чтобы не допустить лишних переборов - например если две таких временных выборки, то их надо вкладывать одну в другую. сравнишь время - напиши разницу.