- SQL Select в няколко полета
WT форуми -> PHP MySQL ASP.NET -> SQL Select в няколко полета
Създайте нова тема Напишете отговор 
Автор Съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 21/06/2017 5:53 pm     SQL Select в няколко полета Отговорете с цитат


Тъпо заглавие, но и не знам как да го допълня.

Идеята е да взема резултатите от 2 таблици като във 2-та ще търсим по няколко параметъра.
Ако искам да селекта няколко пъти във B.field_id полето трябва ли всеки път да е с нов JOIN цялата таблица?

Всички полета са точни и ако пусна да търси само за
PHP code:
B.field_id = 258 AND B.value =  'Daily smoker'

извежда правилен резултат

SQL code:
SELECT U.ID
FROM wpxx_bp_xprofile_data B, wpxx_users U
WHERE B.user_id = U.ID
AND (
(B.field_id = 258 AND B.value = 'Daily smoker')
AND
(B.field_id = 9 AND B.value = 'Prefer not to say')
AND
(B.field_id = 2 AND B.value BETWEEN 18 AND 60)
)
[/sql]
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
djman
Активен
Активен

Регистриран на: 12/09/2009 10:07 am

Support: 103
Bonus: 196
Мнения: 2768
Мнение 21/06/2017 7:32 pm      Отговорете с цитат


Пробвай така:
(field_id = ... AND ...) OR (field_id = ... AND ...) OR (...)


SQL code:
SELECT U.ID
FROM wpxx_bp_xprofile_data B
INNER JOIN wpxx_users U ON B.user_id = U.ID
WHERE (B.field_id = 258 AND B.value = 'Daily smoker')
OR (B.field_id = 9 AND B.value = 'Prefer not to say')
OR (B.field_id = 2 AND B.value BETWEEN 18 AND 60)


Използвай joins когато можеш Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
index
Man of HiTech

Регистриран на: 08/09/2006 1:08 am

Support: 198
Bonus: 345
Мнения: 5392
Мнение 15/10/2017 12:44 am      Отговорете с цитат


SQL code:
SELECT U.ID
FROM wpxx_bp_xprofile_data B
JOIN wpxx_users U ON B.user_id = U.ID
WHERE B.field_id in (2,9,258)
and ( (B.value in ( 'Prefer not to say', 'Daily smoker') OR (B.value BETWEEN 18 AND 60) )


Не съм го пробвал, може и да има някаква грешка. Не ми харесва в базата да има не еднотипни данни - говоря за 18-60 и типа на пушача.

Предполагам, че 18-60 са годините на хората които пушат. То тогава има нещо сбъркано с базата.

p.s. Внимавай с in в SQL. Всеки сървър има различни лиматации от към него. MySql можеше до 1 000 атрибута да приеме. Postgresql - можеш доста, но се забавя значително.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 15/10/2017 5:44 pm      Отговорете с цитат


index написа:
SQL code:
SELECT U.ID
FROM wpxx_bp_xprofile_data B
JOIN wpxx_users U ON B.user_id = U.ID
WHERE B.field_id in (2,9,258)
and ( (B.value in ( 'Prefer not to say', 'Daily smoker') OR (B.value BETWEEN 18 AND 60) )


Не съм го пробвал, може и да има някаква грешка. Не ми харесва в базата да има не еднотипни данни - говоря за 18-60 и типа на пушача.

Предполагам, че 18-60 са годините на хората които пушат. То тогава има нещо сбъркано с базата.

p.s. Внимавай с in в SQL. Всеки сървър има различни лиматации от към него. MySql можеше до 1 000 атрибута да приеме. Postgresql - можеш доста, но се забавя значително.

Отново в стара тема?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети