|
|
|
| Есть табличка:
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 рядов) , если не найдено ничего | |
|
|
|
|
|
|
|
для: .....
(19.03.2010 в 17:19)
| | Дело в том, что оператор OR вернёт запись, удовлетворяющую либо первому, либо второму условию. А нужно, чтобы записи возвращались только если оба условия выполняются. Получается, что OR тут не подходит | |
|
|
|
|
|
|
|
для: alexhbn
(19.03.2010 в 16:37)
| | Может LIKE? | |
|
|
|
|
|
|
|
для: Рома
(19.03.2010 в 17:23)
| | Like ? | |
|
|
|
|
|
|
|
для: alexhbn
(19.03.2010 в 17:25)
| | нет, это я ошибся, не разглядел структуру | |
|
|
|
|
|
|
|
для: Рома
(19.03.2010 в 17:28)
| | Выборка значения столбца fieldValue разумеется like'ом.
Вопрос как объединить эти два условия через AND а не через OR
fieldId=26 AND fieldValue='100'
AND
fieldId=27 AND fieldValue='val' | |
|
|
|
|
|
|
|
для: 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
но это уже клиника )) | |
|
|
|
|
|
|
|
для: alexhbn
(19.03.2010 в 16:37)
| | А теперь еще раз подумайте, что вы делаете.
Вы за раз пытаетесь вытащить две строки при том, что субд может возвращать только по одной.
Ничего не перепутали? | |
|
|
|
|
|
|
|
для: neadekvat
(19.03.2010 в 19:00)
| | Можете что-то посоветовать? | |
|
|
|
|
|
|
|
для: alexhbn
(20.03.2010 в 00:55)
| | Ответ дан в посте от (19.03.2010 в 17:19) | |
|
|
|
|
|
|
|
для: alexhbn
(19.03.2010 в 16:37)
| | очевидно, эти самые ключи 26 и 27 не с пустого места взялись, а присутствуют где-то в другой таблице? | |
|
|
|