IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

JOIN SQL et commande complexe


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Par défaut JOIN SQL et commande complexe
    Bonjour, je suis actuellement en train de développer un moteur de recherche et j'ai passé l'après-midi à programmé une commande SQL permettant de trier par pertinence mes résultats, ça marche très bien.

    Le problème c'est que la recherche se fait actuellement en deux temps, sur deux tables différentes avec les mêmes champs (enfin en ce qui concerne cette commande SQL précisément), j'avais fait un while() en PHP et j'affichais les résultats d'une table puis de l'autre. Je viens de réaliser que c'était pas du tout la bonne méthode puisque ça coupe complétement cette idée de pertinence le fait de séparer les résultats des deux tables.

    Me rappelant qu'on pouvait joindre des tables en SQL je me suis renseigné (j'ai encore jamais appliqué de jointure, j'en avais pas eu besoin jusque là), mais ça bug, ça ne marche pas du tout...

    Je m'en remet donc à vous après avoir longuement chercher une solution, mais sans y arriver...

    (La commande SQL n'est ici pas dynamique puisque c'est le résultat d'un echo() - sinon c'est illisible pour vous - mais l'idée est là)

    Commande qui marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT (title LIKE '%test moteur%') as found_exact, ( (title LIKE '%test%') + (title LIKE '%moteur%') ) AS found_count, id, title, description, rate, preview, genre, type, file_size, vote_up, vote_down, uploader 
    
    FROM directlink 
    
    WHERE (title LIKE '%test%' OR title LIKE '%moteur%') AND (genre = 'game') 
    
    ORDER BY found_exact DESC, found_count DESC, (vote_up-vote_down) DESC LIMIT 50;
    Commande qui ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT (title LIKE '%test moteur%') as found_exact, ( (title LIKE '%test%') + (title LIKE '%moteur%') ) AS found_count, id, title, description, rate, preview, genre, type, file_size, vote_up, vote_down, uploader 
    
    FROM directlink, filehosting 
    
    WHERE (title LIKE '%test%' OR title LIKE '%moteur%') AND (genre = 'game') 
    
    ORDER BY found_exact DESC, found_count DESC, (vote_up-vote_down) DESC LIMIT 50;
    J'ai bien vérifié, les champs appelés sont exactement les mêmes au niveau de la structure, je ne sais donc pas quoi faire, et vu que la commande est assez compliqué c'est délicat de trifouiller :-(

    Merci beaucoup pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce n'est pas une jointure qu'il te faut mais une union.
    Une jointure sert a croiser des tables qui ont des données communes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ce n'est pas une jointure qu'il te faut mais une union.
    Une jointure sert a croiser des tables qui ont des données communes.
    Merci pour cette réponse rapide, en effet je pense que c'est plus vers l'union que je dois me tourner finalement. Après quelques tests, ça retourne toujours une erreur, doit y avoir plein de fautes dans ma commande mais je ne vois pas vraiment...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT (title LIKE '%super smash%') as found_exact, ( (title LIKE '%super%') + (title LIKE '%smash%') ) AS found_count, id, title, description, rate, preview, genre, type, file_size, vote_up, vote_down, uploader FROM directlink WHERE (title LIKE '%super%' OR title LIKE '%smash%') AND (genre = 'game') ORDER BY found_exact DESC, found_count DESC, (vote_up-vote_down) DESC LIMIT 50) UNION [ALL] (SELECT (title LIKE '%super smash%') as found_exact, ( (title LIKE '%super%') + (title LIKE '%smash%') ) AS found_count, id, title, description, rate, preview, genre, type, file_size, vote_up, vote_down, uploader FROM filehosting WHERE (title LIKE '%super%' OR title LIKE '%smash%') AND (genre = 'game') ORDER BY found_exact DESC, found_count DESC, (vote_up-vote_down) DESC LIMIT 50);

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Par défaut
    Après quelques corrections évidentes (ORDER BY en repeat ^^) mon script marche apparemment, je renverais un message s'il y a encore un bug visible, merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL 2000] commande Last ???
    Par BilTCD dans le forum Langage SQL
    Réponses: 11
    Dernier message: 06/01/2011, 15h56
  2. [SQL] La commande DELETE
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/06/2006, 09h28
  3. [VB6][VBE][SQL][...]Objets Command avec MailMerge
    Par jacma dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/05/2006, 10h12
  4. [SQL Oracle] Requête complexe
    Par lapartdombre dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/11/2005, 14h31
  5. [Debutant][Join Sql] problème de join
    Par ultimax dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo