![]() |
MySQL как выбрать 3 значения из разных таблиц?
Народ, помогите выбрать из базы данных 3 значения из разных таблиц.
Мне нужно выбрать : 1) Количество фотографий 2) Количество товаров 3)Количество сообщений в гостевой книге. Я это сделал так : (SELECT count(idjp) FROM `jpg`) UNION (SELECT count(idsp) FROM `shop`) UNION (SELECT count(idgb) FROM `gb`) И вроде даже работает, но... пока не появляются в выборке одинаковые значения. Например idjp=30 idsp=15 и idgb=15. Два первых значения выбираются правильно, а последнего вообще нет. Пытался перестроить запрос типа : SELECT count(idjp),count(idsp),count(idgb) FROM `jpg`,`shop`,`gb` Результат вообще чушь непонятная.... Как же правильно создать запрос??????? |
benya
Я бы выбирал значения по отдельности SELECT count(idjp) FROM 'jpg', SELECT count(idsp) FROM 'shop' и так далее... |
Так в первом случае и выбираются данные как бы в 3 запроса, только результат будет один "плоский". И если данные совпадают, то получается глюк какой-то. (как я описал выше).
Я принципиально не хочу выбирать значения отдельно. Зачем делать что-то делать три раза, если данные можно получить одним запросом?? И системные ресурсы экономятся. |
benya
Не факт. Вы поглядите (используя EXPLAIN) что да как. У меня лично аналогичные мнению dmitryst мысли. Explain выдаст информацию о числе связей которые должен сделать движок и много чего еще полезного. P.S. К тому же не стоит оптимизировать все и вся, хорошего в меру. Машины сейчас мощные, экономить на таких вещах при числе не большом числе (1000/сек) посетителей, думаю не целесообразно. |
Select table1.value1, table2.value2, table3.value3 ......
сначала название таблицы, потом через (.) название нужного поля. |
На самом деле я уже нашел ответ на свой же вопрос.
Можно сделать так: Код:
SELECT count(DISTINCT idjp), count(DISTINCT idsp),count(DISTINCT idgb) FROM `jpg`, `shop`,`gb` To: Prisoner Конечно в чем-то ты прав, но.... Заместь 6 строк, мне бы пришлось написать 26...зачем??? Это все равно что заместь, к примеру такого кода: Код:
for ($i=0; $i<1000; $i++) { Код:
$r[1] = 1; P.S. Всем спасибо за ответы ;)) |
Время: 21:51. |
Время: 21:51.
© OSzone.net 2001-