Это немного выше моих навыков, и мне очень помогли хорошие люди из SO, чтобы продвинуться так далеко.Теперь мне нужно вставить MATCH () ... ПРОТИВ (), но я не знаю, куда его вставить?
У меня есть запрос (и это короткая версия):
SELECT
SQL_CALC_FOUND_ROWS i.idItems RowCount,
i.* Items,
# Create a JSON formatted field
CONCAT('{',GROUP_CONCAT('"',Attributes.key, '":"', CONVERT(Attributes.value,CHAR),'"'),'}') as Attributes,
IF (te.Key IS NULL,tp.Key,te.Key) as Type,
tc.Value Color,
l.* Location,
c.Name,
c.Mobile,
c.Mail
FROM
(SELECT ItemID, ats.Key, ats.Value FROM attributeStrings as ats
UNION ALL
SELECT ItemID, ati.Key, ati.Value FROM attributeIntegers as ati
) Attributes
JOIN Items i ON
i.idItems = Attributes.ItemID
AND CheckIn >= DATE_SUB('2011-02-16 00:00:00',INTERVAL 90 DAY)
AND CheckIn <= DATE_ADD('2011-02-16 23:59:59',INTERVAL 90 DAY)
AND Checkout IS NULL
LEFT JOIN Customers c ON c.idCustomers = i.CustomerID
LEFT JOIN attributeintegers atli ON atli.itemid = i.idItems AND atli.key = 'Location'
LEFT JOIN locations l ON l.id = atli.value
LEFT JOIN attributestrings atts ON atts.itemid = i.idItems AND atts.key = 'Type' LEFT
JOIN Lists tp ON tp.value = atts.value
LEFT JOIN attributestrings attes ON attes.itemid = i.idItems AND attes.key = 'Tech' LEFT
JOIN Lists te ON te.value = attes.value
LEFT JOIN attributeintegers atci ON atci.itemid = i.idItems AND atci.key = 'Color' LEFT
JOIN Strings tc ON tc.StringID = atci.value
GROUP BY Attributes.ItemID
ORDER BY CheckIn DESC
Теперь мне нужно где-то здесь вставить это утверждение
MATCH(attributestrings.Value) AGAINST("Nokia" IN BOOLEAN MODE)
Как вы можете видеть, есть таблица с именем attributetestrings , которая имеет 3 столбца: ItemID , * Key * и Значение .Мне нужно найти в столбце Значение слова в AGAINST () и показать только результаты, соответствующие этому и другим критериям, таким как Дата и Оформление заказа выше.
Я пытался добавить оператор после AND Checkout IS NULL
следующим образом:
AND Checkout IS NULL
AND MATCH(Attributes.Value) AGAINST("Nokia" IN BOOLEAN MODE)
Мне пришлось использовать Attributes.Value вместо attributetestrings , потому что это нене нашел стол.Это привело только к тому, что в столбце CONCATENATED Attributes содержалось только значение «Nokia», даже если там было больше CONCATENATE.
Я надеюсь, что кто-то готов принять этот вызов ...
/ Tank you.
[EDIT]
Я попытался вставить WHERE перед GROUP, как предложил Тим Фульц, но я получаю сообщение об ошибке Unknown column ' attributetestrings.Значение 'в' Где оговорка '
LEFT JOIN attributeintegers atci ON atci.itemid = i.idItems AND atci.key = 'Color' LEFT JOIN Strings tc ON tc.StringID = atci.value
WHERE MATCH(attributestrings.Value) AGAINST("Nokia Sony" IN BOOLEAN MODE)
GROUP BY Attributes.ItemID