Комплекс Mysql, где пункт - PullRequest
       8

Комплекс Mysql, где пункт

2 голосов
/ 20 сентября 2010

Я действительно удивился, когда попробовал приведенный ниже код в MySQL:

SELECT * FROM table WHERE (key='free_shipping' and value='yes') AND (key='price' and value='5')

Это не работает. Мне нужно получить продукт, который free_shipping равен 'да' И цена равна 5 'одновременно Как правильно создать этот запрос?

Структура таблицы:

содержание: (ТАБЛИЦА 1)

CONTENT_ID   TITLE  DESCRIPTION  DATE

content_fields: (ТАБЛИЦА 2)

FIELD_ID   CONTENT_ID    KEY_NAME    VALUE

Пример (Получить товар с 1 идентификатором и бесплатная доставка) :

SELECT *  FROM `contents` as c LEFT JOIN `content_fields` as cf ON  c.content_id = cf.content_id WHERE c.content_id = 1 AND  cf.key_name = 'free_shipping' AND cf.value = 'yes'

Ответы [ 4 ]

7 голосов
/ 20 сентября 2010

Ваш текущий запрос противоречив, поскольку одна строка никогда не может соответствовать предложению WHERE.Я полагаю, вы хотите что-то вроде этого.

SELECT product_id
FROM table 
WHERE (key='free_shipping' and value='yes') or (key='price' and value='5')
GROUP BY product_id
HAVING COUNT(DISTINCT key) = 2
5 голосов
/ 20 сентября 2010

Попробуйте это:

WHERE free_shipping='yes' AND price='5'

или

WHERE free_shipping=yes AND price=5

если поля не являются строками

1 голос
/ 21 сентября 2010

Чтобы получить названия продуктов с бесплатной доставкой и стоимостью 5 ....... выберите отдельные x.TITLE из содержимого x, content_fields y, content_fields z где x.CONTENT_ID = y.CONTENT_ID и y.CONTENT_ID = z.CONTENT_ID и y.key_name = 'free_shipping' и y.value = 'yes' и z.key_name = 'price' и z.value = '5'

1 голос
/ 20 сентября 2010

Скобки не меняют смысла этого утверждения. Без них у вас есть:

key='free_shipping' and value='yes' and key='price' and value='5'
=>
key='free_shipping' and key='price'
=>
nothing!

попробуй WHERE free_shipping='yes' AND price='5'

редактировать : Откажись от этого, теперь я совершенно сбит с толку твоим столом. Это просто загрузка пар ключ / значение? Можем ли мы увидеть структуру таблицы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...