[RESOLU] Opération sur jointure ?

Eléphant du PHP | 138 Messages

18 févr. 2019, 06:08

Hezllo,

Alors celle là, je pense qu'on vous l'a jamais faite :P

Voilà, j'ai une table "history" (toujours sur le soft de prog musicale), avec dedans :
artist, title, duration, date_played, et quelques autres infos qui ne nous intéressent pas ici.
Malheureusement, l'information la plus importante, l'ID de la musique, n'est pas enregistré.
Pour le retrouver, je joins la table "songs", par l'artiste et le titre.
Le résultat n'est pas mal mais pas pleinement satisfaisant où si il y a des doubles dans songs, bah ils vont ressortir.

Je me dis "Bah ajoute date_played dans la jointure, puisque dans la table songs, c'est aussi écrit".

Donc ajout, mais curieux, quelques musiques sortent en ID null .
En cherchant, je constate qu'il y a pour quelques musiques, une seconde d'écart entre le date_played de l'history et le date_played de la table songs.
Forcément, la jointure ne se fait donc pas, et je récupère pas mon ID.

Est-il possible de faire une jointure dans le genre :

Code : Tout sélectionner

SELECT blablabla FROM history LEFT JOIN songs ON ( difference entre songs.date_played et history.date_played ) < 3 secondes
Merkouin :)

Edit : C'est en écrivant la fin du message que la (petite) lampe s’est allumée, sans vraiment y croire (j'attendais en beau message d'erreur mais en fait non) :

Code : Tout sélectionner

LEFT JOIN songs ON (( songs.date_played - history.date_played < 3) AND ( history.date_played - songs.date_played < 3))
Je n'aurais jamasi pensé qu'on puisse faire ca mais ça a l'air de marcher .
Voilà, si ca peut servir à d'autres membres :)
Un Couin vaut mieux que Deux tu couineras :D