Читал, читал, ничего не понял... Есть две таблицы - t1(id, name) и t2(id, name). Код (Text): SELECT `id` FROM `t1`,`t2` WHERE `name` = 'vasya' Как синтаксически правильно построить этот запрос?
проще всего так SELECT `id` FROM `t1` WHERE `name` = 'vasya' UNION SELECT `id` FROM `t2` WHERE `name` = 'vasya'
А по моему проще указать какой именно ид выводить если оба то так Код (Text): SELECT t1.id, t2.id FROM `t1`,`t2` WHERE `name` = 'vasya'
уверен)? Добавлено спустя 3 минуты 53 секунды: у меня был сходный вариант но там нюансы: вместо одного столбца получаем 2 запрос ведёт себя неочевидно, если ид дублируются Код (Text): SELECT tab1.id, tab2.id FROM`tab1` ,`tab2` WHERE tab1.`name`='va' AND tab2.`name`='va' Добавлено спустя 9 минут 52 секунды: о, вот оно - аналогичное решение без юнион, но врядли оно проще Код (Text): SELECT DISTINCT if( f1 = f2, t3.id1, t3.id2 ) AS res FROM ( SELECT rand( 120) AS f1 FROM tab1 LIMIT 2 ) AS tmp JOIN ( SELECT rand( 120) AS f2 ) AS tmp1, ( SELECT tab1.id AS id1, tab2.id AS id2 FROM`tab1` ,`tab2` WHERE tab1.`name`='va' AND tab2.`name`='va' ) AS t3
Ух да ты уже и проверил Ладно что скажешь про JOIN он то по моему оптимален Код (Text): SELECT t1.id, t2.id FROM `t1` JOIN `t2` USING(id) WHERE `name` = 'vasya'
та жеж ошибка Добавлено спустя 11 минут 18 секунд: и вот, кстати, почему ты решил что можно по ид таблицы связать.. не, ну обычную практику оставим, из постановки задачи можно сделать вывод, что там лежат разные данные, не связанные между собой
проверил, согласен все таки union как то не хорошо, простой селект лучше SELECT t1.id, t2.id FROM `t1`,`t2` WHERE t1.name = 'vasya' AND t2.name = 'vasya'
куча дублей. неэстетично в 1-й табле искомые ид - 2, 10, во второй - 1,10 итого получаем 2, 1 10, 1 2, 10 10, 10 если совпадений с именем будет больше - соотв размер выборки будет расти в геометрической прогрессии
По сути, нет. Задача - понять, есть ли хоть одно совпадение по значению ячейки, из двух таблиц, с заданной переменной. Выбрал UNION, поскольку необходимо проверить вышеописанное по двум переменным и, соответственно, 4 столбцам двух таблиц. JOIN селект в данном случае визуально перегружается: Код (Text): SELECT t1.id, t2.id FROM `t1`,`t2` WHERE t1.name = 'vasya' OR t2.name = 'vasya' OR t1.age = '18' OR t2.age = '18' Как-то так.
о, кстати, smitt, в случае с and при наличии совпадений в 1-й табле и отсутствии таковых во второй запрос тоже некорректно отработает. не зря мне этот вариант не нравился. а в случае or - да, задача будет выполнена, хотя и не та, которую мы решали Добавлено спустя 3 минуты 27 секунд: неслабая перегрузка )))