if (....) {в таблице 1}
elseif (....) {в таблице 2}
else {нигде}
+ получить данные строки, из той или иной таблицы.
Собственно говоря, не хочу городить огород из двух запросов, или второй запрос делать в зависимости от условия первого.
Если есть красивое решение, подскажите.
Спустя 14 минут, 29 секунд (23.07.2012 - 15:06) vagrand написал(а):
Никак нельзя, вам в любом случае нужно будет выполнить 2а запроса
Спустя 31 минута, 56 секунд (23.07.2012 - 15:38) dron4ik написал(а):
можно одним запросом и проверить и вывести, но если возникнет ситуация что совпадут параметры, могут быть проблемы...
Спустя 1 час, 1 минута, 55 секунд (23.07.2012 - 16:40) vagrand написал(а):
Цитата (dron4ik @ 23.07.2012 - 12:38) |
можно одним запросом и проверить и вывести, но если возникнет ситуация что совпадут параметры, могут быть проблемы... |
Хмм, интересно каким оразом, можете привести пример такого чудесного запроса?
Спустя 41 минута, 27 секунд (23.07.2012 - 17:22) ihaveabiggun написал(а):
Спустя 3 минуты, 33 секунды (23.07.2012 - 17:25) dron4ik написал(а):
Цитата (vagrand @ 23.07.2012 - 13:40) | ||
Хмм, интересно каким оразом, можете привести пример такого чудесного запроса? |
Та простой Select из двух таблиц по знаменателю с *... ну а потом обработать полученое и понять откуда оно взялось.
Спустя 13 минут, 8 секунд (23.07.2012 - 17:38) vagrand написал(а):
Просой селек из двух таблиц выведет все данный из одной и другой таблиц, а это совсем не то что нужно ТС-у
Спустя 1 минута, 1 секунда (23.07.2012 - 17:39) vagrand написал(а):
Цитата |
Подойдёт ?! http://www.mysql.ru/docs/man/UNION.html |
UNION всего лиш объединяет результаты двух запросов в один, все равно оба запроса будут выполнены.
Спустя 3 часа, 19 минут, 16 секунд (23.07.2012 - 20:59) linf написал(а):
$sql = "(SELECT `id`,`title`,`image`,`cat`,'base' AS `table` FROM `base` WHERE `title`='$link') ";
$sql.= "UNION ALL (SELECT `id`,`title`,NULL,NULL,'category' AS `table` FROM `category` WHERE `title`='$link')";
Юнион помог, спасибо.
Даже имя таблицы которой принадлежит выборка, можно узнать.
Теперь хотелось бы прям в этом запросе, сделать следующее,если данные выводятся из таблицы `category`, то присоединить все строки из таблицы `base` где `base`.`cat` = `category`.`id`
Конечно можно было бы все это разбавить PHP, и написать еще запрос, но хочется пописать на SQL это тоже ведь язык, да и работать думаю будет быстрее. ;)
Спустя 11 минут, 52 секунды (23.07.2012 - 21:11) inpost написал(а):
могу дать совет - разбивай!
Спустя 6 минут, 28 секунд (23.07.2012 - 21:17) linf написал(а):
Цитата (inpost @ 23.07.2012 - 22:11) |
могу дать совет - разбивай! |
почему?
Кстати, что скажешь, если я в самом начале, выберу все таблицы и засуну их например в сессии, это нормальное?
P.S. И что же с запросом делать.
Спустя 18 минут, 9 секунд (23.07.2012 - 21:35) ihaveabiggun написал(а):
Что-то типа того:
SELECT table_a.*, 1 tablenum FROM table_a
UNION ALL
SELECT table_b.*, 2 FROM table_b
ORDER BY 1
Спустя 29 минут, 11 секунд (23.07.2012 - 22:04) linf написал(а):
Цитата (ihaveabiggun @ 23.07.2012 - 22:35) |
Что-то типа того:SELECT table_a.*, 1 tablenum FROM table_a |
не то, это я уже сделал
Спустя 19 минут, 2 секунды (23.07.2012 - 22:23) linf написал(а):
Пытаюсь так, но что то не работает:
$sql = "SELECT * FROM(SELECT `id`,`title`,`image`,`category`,'base' AS `table` FROM `base`
UNION SELECT `id`,`title`,NULL,NULL,'category' AS `table` FROM `category`)
AS U LEFT JOIN `base` ON `base`.`category`=U.`id` ";
Спустя 10 часов, 57 минут, 51 секунда (24.07.2012 - 09:21) vagrand написал(а):
linf
Я еще раз повторяю - нет практически никакой разницы между выполнением двух запросов связанных через UNION и выполнением двух отдельных запросов. Более того в твоем случае UNION даже хуже, т.к. он в любом случае выполнит оба запроса, а вот если выполнять их по почереди с проверкой, то выполнение второго запроса может и не понадобится.
Что же каксается следующего запроса то это просто кошмар оптимизатора, тут тебе и подзапрос и LEFT JOIN.
Я еще раз повторяю - нет практически никакой разницы между выполнением двух запросов связанных через UNION и выполнением двух отдельных запросов. Более того в твоем случае UNION даже хуже, т.к. он в любом случае выполнит оба запроса, а вот если выполнять их по почереди с проверкой, то выполнение второго запроса может и не понадобится.
Что же каксается следующего запроса то это просто кошмар оптимизатора, тут тебе и подзапрос и LEFT JOIN.
SELECT * FROM(SELECT `id`,`title`,`image`,`category`,'base' AS `table` FROM `base`
UNION SELECT `id`,`title`,NULL,NULL,'category' AS `table` FROM `category`)
AS U LEFT JOIN `base` ON `base`.`category`=U.`id`
Спустя 38 минут, 7 секунд (24.07.2012 - 09:59) inpost написал(а):
простые запросы быстрее работают, чем юнионы и джоины... А кешировать результат можно в обоих случаях, только бд будет проще...
_____________
Live in new format =)