Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проверить есть ли в таблицах значение
 
 автор: naushka   (03.06.2011 в 16:08)   письмо автору
 
 

есть несколько таблиц, у всех есть поле id_lalala, как проверить есть ли значение в этих таблицах

сейчас делаю так, например если надо искать для значения 11


SELECT 
    (SELECT COUNT(*) FROM table_1 WHERE id_lalala=11) t1,
    (SELECT COUNT(*) FROM table_2 WHERE id_lalala=11) t2,
    (SELECT COUNT(*) FROM table_3 WHERE id_lalala=11) t3,
    (SELECT COUNT(*) FROM table_4 WHERE id_lalala=11) t4


таких таблиц будет где-то 25 хотя может быть и больше

может есть более оптимальный вариант?

спасибо

  Ответить  
 
 автор: naushka   (03.06.2011 в 17:12)   письмо автору
 
   для: naushka   (03.06.2011 в 16:08)
 

ну вот примерно есть такие таблицы
table_car: id, id_user, ...
table_pc: id, id_user, ...
table_email: id, id_user, ...
...

так вот, мне надо узнать что есть у юзера а что нет
надо получить такой массив
{
'car' => 1, // есть
'pc' => 0, // нет
'email' => 1, // есть
...
}

ну или такой
{
'car' => 2, // есть 2 машины
'pc' => 0, // нет
'email' => 4, // есть 4 емэйла
...
}

  Ответить  
 
 автор: cheops   (03.06.2011 в 17:39)   письмо автору
 
   для: naushka   (03.06.2011 в 17:12)
 

Как вариант объединение LEFT JOIN к таблице пользователей, но вероятно, это тоже будет не сахар. Такая значительная нормализация всегда приводит к многоэтажным запросам. Если вас беспокоит производительность вероятно есть смысл подумать о хэш-таблице, где бы эти данные были денормализованы. Т.е. таблица id_user, car, pc, email с 0/1 на предмет того есть или нет.

  Ответить  
 
 автор: Lotanaen   (03.06.2011 в 17:40)   письмо автору
 
   для: naushka   (03.06.2011 в 17:12)
 

а если через UNION :



    SELECT COUNT(*) as cnt FROM table_1 WHERE id_lalala=11 UNION ALL
    SELECT COUNT(*) as cnt FROM table_2 WHERE id_lalala=11 UNION ALL
    SELECT COUNT(*) as cnt FROM table_3 WHERE id_lalala=11 UNION ALL
    SELECT COUNT(*) as cnt  FROM table_4 WHERE id_lalala=11

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования