je le tableau suivantSQLite comme requête pour plusieurs lignes
---------------------------------------
id, type, keyword, default
---------------------------------------
1, 1, mcdonalds, 1
2 1, food, 0
3, 1, drinks, 0
4, 2, vending machine, 1
5, 2, drinks, 0
6, 3, station, 1
7, 3, travel, 0
8 3, train, 0
L'idée sous-jacente est que je veux une requête serach returing type « un unique » pour les mots clés (la ligne par défaut), alors quand je cherche McDonald, je reçois le premier rang, mais quand je cherche de la nourriture ou des boissons, je reçois aussi le premier rang.
Je l'ai fait en utilisant un sous-ensemble.
SELECT type, keyword FROM keywords WHERE type IN (SELECT DISTINCT type FROM keywords WHERE keyword like '%?%') AND `default`=1
;
Cela fonctionne comme un charme, maintenant mais je veux être en mesure de donner plusieurs mots-clés, par exemple « boissons & nourriture » J'ai essayé
SELECT type, keyword FROM keywords WHERE type IN (SELECT DISTINCT type FROM keywords WHERE keyword like '%?%' OR keyword like'%?%') AND `default`=1
;
Mais quand je recherche « nourriture & boit "dans ce cas j'obtiendrais à la fois" le distributeur automatique "et les" McDonald ". Cependant, le distributeur automatique n'a qu'un mot-clé "boissons" assosié (il ne sert pas de nourriture) donc je ne veux pas celui-là dans mes résultats.
Lorsque je fais 'ET' au lieu de OU comme, je n'obtiens aucun résultat (puisque une ligne ne peut pas avoir les deux valeurs en même temps).
Quelqu'un at-il des suggestions sur la façon dont je pourrais résoudre ce problème?
votre requête retourne toujours un enregistrement et si add 3 mot-clé 'AND type IN (SELECT DISTINCT type FROM mots-clés WHERE mot-clé comme '% station%')' il ne renvoie rien – cetver
Il retournera deux enregistrements s'il y a deux types où les deux mots-clés correspondent. –
Ouais, ça marche un peu, mais ce n'est pas ce que je cherche, quand je cherche quelque chose comme "e d" ça va se montrer comme tout parce que c'est trop gourmand. – Matthijn