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

Форум MySQL

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

 

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

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

тема: Помогите с критерием выборки
 
 автор: alexhbn   (19.03.2010 в 16:37)   письмо автору
 
 

Есть табличка:

id | fieldId | fieldVaue | itemId
-----------------------------------------
1 26 100 4
2 27 'val' 4
3 29 340 6

как выбрать записи, в которых:

fieldId= 26 И fieldVaue = '100'
и
fieldId= 27 И fieldVaue = 'val'

т.е. запрос должен вернуть строки с id=1 и 2 в том сучае, если выпонены ОБА вышеуказанных условия. Если хотя бы одно из условий не выполняется результат должен быть пустым множеством.

т.е. что-то типо такого SELECT * FROM table
WHERE
fieldId=26 AND fieldValue='100'
AND
fieldId=27 AND fieldValue='val'

PS: я новичёк.

  Ответить  
 
 автор: .....   (19.03.2010 в 17:19)
 
   для: alexhbn   (19.03.2010 в 16:37)
 

Объеденить скобками части условий

( fieldId=26 AND fieldValue='100' )
OR
( fieldId=27 AND fieldValue='val' )

>результат должен быть пустым множеством.
обычно просто возвращается пустой результат (0 рядов) , если не найдено ничего

  Ответить  
 
 автор: alexhbn   (19.03.2010 в 17:24)   письмо автору
 
   для: .....   (19.03.2010 в 17:19)
 

Дело в том, что оператор OR вернёт запись, удовлетворяющую либо первому, либо второму условию. А нужно, чтобы записи возвращались только если оба условия выполняются. Получается, что OR тут не подходит

  Ответить  
 
 автор: Рома   (19.03.2010 в 17:23)   письмо автору
 
   для: alexhbn   (19.03.2010 в 16:37)
 

Может LIKE?

  Ответить  
 
 автор: alexhbn   (19.03.2010 в 17:25)   письмо автору
 
   для: Рома   (19.03.2010 в 17:23)
 

Like ?

  Ответить  
 
 автор: Рома   (19.03.2010 в 17:28)   письмо автору
 
   для: alexhbn   (19.03.2010 в 17:25)
 

нет, это я ошибся, не разглядел структуру

  Ответить  
 
 автор: alexhbn   (19.03.2010 в 17:30)   письмо автору
 
   для: Рома   (19.03.2010 в 17:28)
 

Выборка значения столбца fieldValue разумеется like'ом.
Вопрос как объединить эти два условия через AND а не через OR
fieldId=26 AND fieldValue='100'
AND
fieldId=27 AND fieldValue='val'

  Ответить  
 
 автор: alexhbn   (19.03.2010 в 17:29)   письмо автору
 
   для: alexhbn   (19.03.2010 в 16:37)
 

Напрашивается что-то типа такого кретинизма :

SELECT COUNT(*) 'cnt', tb.ItemId FROM (
SELECT * FROM table a WHERE (a.fieldId=26 AND a.fieldValue='100')
OR (a.fieldId=27 AND a.fieldValue='val')
) tb GROUP BY tb.ItemId
HAVING cnt = 2

но это уже клиника ))

  Ответить  
 
 автор: neadekvat   (19.03.2010 в 19:00)   письмо автору
 
   для: alexhbn   (19.03.2010 в 16:37)
 

А теперь еще раз подумайте, что вы делаете.
Вы за раз пытаетесь вытащить две строки при том, что субд может возвращать только по одной.
Ничего не перепутали?

  Ответить  
 
 автор: alexhbn   (20.03.2010 в 00:55)   письмо автору
 
   для: neadekvat   (19.03.2010 в 19:00)
 

Можете что-то посоветовать?

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 09:02)   письмо автору
 
   для: alexhbn   (20.03.2010 в 00:55)
 

Ответ дан в посте от (19.03.2010 в 17:19)

  Ответить  
 
 автор: Trianon   (20.03.2010 в 13:02)   письмо автору
 
   для: alexhbn   (19.03.2010 в 16:37)
 

очевидно, эти самые ключи 26 и 27 не с пустого места взялись, а присутствуют где-то в другой таблице?

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

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