Bonjour à tous.
Voilà j'ai une petite question. J'ai la requête suivante:
$query_tout= "SELECT id,fr,jp,romaji,kana FROM vocabulaire WHERE ";
$query_tout.="msearch='".$mot_noAccent."' ";//FR exact
$query_tout.="OR jp='".$mot."' ";//JP exact
$query_tout.="OR romaji='".$mot_romaji."' ";//ROMAJI exact
$query_tout.="OR kana='".$mot."' ";//KANA exact
//--//
$query_tout.="OR msearch LIKE'".$mot_noAccent." %' ";//FR en première position
//--//
$query_tout.="GROUP BY id ORDER BY LENGTH(fr) ASC LIMIT 3000 ";
Et je voudrait pouvoir ordonner mes résultats de la manière suivante:
afficher d'abord les résultats pour msearch='".$mot_noAccent."' ,
puis ceux pour
jp ='".$mot."' , ensuite ceux pour
romaji='".$mot_romaji."' etc...
est-ce possible de faire ça en une seule requête?
J'ai essayé en faisant des jointures, mais je ne suis pas sur de ma syntaxe ni du résultat:
(exemple pour rechercher le mot "chat")
SELECT id, fr, jp, romaji, kana
FROM vocabulaire Tout
INNER JOIN (
SELECT id AS id_fr
FROM vocabulaire
WHERE msearch = 'chat'
ORDER BY LENGTH( msearch ) ASC
LIMIT 3000
)Tfr ON Tfr.id_fr = Tout.id
INNER JOIN (
SELECT id AS id_jp
FROM vocabulaire
WHERE jp = 'chat'
ORDER BY LENGTH( jp ) ASC
LIMIT 3000
)Tjp ON Tjp.id_jp = Tout.id
INNER JOIN (
SELECT id AS id_fr2
FROM vocabulaire
WHERE msearch LIKE 'chat %'
ORDER BY LENGTH( msearch ) ASC
LIMIT 3000
)Tfr2 ON Tfr2.id_fr2 = Tout.id
ORDER BY id_fr, id_jp, id_fr2 ASC
LIMIT 3000
Quelqu'un pourrait-il m'aider??
Merci d'avance !
Afficher la suite