Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выборка значений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Sig
Отправлено: 06 Марта, 2013 - 21:53:34
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Подскажите как можно объединить что б быстро выполнялось
сейчас работает отдельно каждый
join у меня что-то не получилось нормально сделать
это фильтр товара

1 таблица
делаем запрос по нескольким характеристикам (name) получаем id их (optionid)
База примерно 300 строк

CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT optionid FROM таблица_1 WHERE option_value IN ($name))

optionid----name
11----------mp3
12----------фай-фай
18----------радио

2 таблица
у товара должен быть в характеристиках mp3 и фай-фай (оба)
(optionid) 11 и 12 ест у (dopid) 1 и 29
База примерно 10000 строк

CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT optionid FROM таблица_2 WHERE variantID IN (ответ таблица_1) GROUP BY productID HAVING count(0)=количеству характеристик)

optionid---dopid
11----------1
11----------18
11----------29
12----------29
12----------1
12----------18


3 таблица
выводим dopid какие удовлетворяют 2 таблицы
База примерно 1000 строк

CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT * FROM 3_таблица WHERE dopid IN (ответ таблица_3))

dopid--lastname----adreee----tel
11------иванов------москва----99
11------сидоро------киев-------8 8
11------петров------харьков---11
18------васичькин---питер-----12

(Отредактировано автором: 06 Марта, 2013 - 21:54:36)

 
 Top
ПТО
Отправлено: 07 Марта, 2013 - 13:52:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




Приведи названия строк из таблиц, и что должно получиться. Ты походу пользуешься стандартным языком SQL.
 
 Top
Sig
Отправлено: 08 Марта, 2013 - 01:07:06
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




ПТО пишет:
Приведи названия строк из таблиц, и что должно получиться. Ты походу пользуешься стандартным языком SQL.


да я стандартным языком пока, учу дальше

вводим для поиска mp3 и фай-фай
берём из 1-й таблицы (mp3 и фай-фай) и получаем (11 и 12) - optionid
2- таблиц где употребляются optionid (11 и 12) и получаем dopid - только должно быть и 11 и 12 и каждого элемента
3- таблица dopid где есть такие выводим инфу (в ней детально описание товара)
 
 Top
ПТО
Отправлено: 09 Марта, 2013 - 15:33:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




SELECT *
FROM 1_таблица LEFT JOIN 2_таблица USING (optionid) LEFT JOIN 3_таблица USING(dopid)
WHERE name='mp3' OR name='фай-фай';
--WHERE name IN('mp3', 'фай-фай');
--WHERE name = ANY(ARRAY['mp3', 'фай-фай']);
(Добавление)
Учи стандартный - будет порядок в голове. Всякие примочки и усовершенствования потом выучишь, со временем Хорошо
 
 Top
Sig
Отправлено: 10 Марта, 2013 - 14:37:14
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Спасибо большое получилось, и немного разобрался
получилось


select * FROM таблица_1 LEFT JOIN таблица_2 USING (optionid) LEFT JOIN таблица_2 USING(dopid) WHERE name IN('mp3', 'фай-фай') GROUP BY name HAVING count(0)=2


хотел ещё спросить
если нужно подсчитать count (в этом запросе) как сделать ?, сейчас выдаёт всегда 2, количества "HAVING count(0)=2"

(Отредактировано автором: 10 Марта, 2013 - 20:19:29)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB