Faire un JOIN sur des tables MYSQL...? HELP.!

Fermé
hoppl - 20 déc. 2007 à 21:05
 hoppl - 21 déc. 2007 à 17:31
Bonjour,

Je fais mes premiers pas en programmation PHP/MYSQL. Je réussi à avancé lentement mais sûrement, mais là je viens de rencontrer un problème... J'essaye d'expliquer:

Voici mes 2 tables:
DEC
----------------------------------------------------------------------------------------------------
| decid | date | track1 | track2 | track3 | track4 | track5 |
----------------------------------------------------------------------------------------------------
| 1 | 2007-12-20 | 321 | 143 | 634 | 365 | 343 |
| 2 | 2007-12-19 | 455 | 345 | 231 | 365 | 231 |
| 3 | 2007-12-18 | 121 | 341 | 343 | 541 | 354 |
| 4 | 2007-12-17 | 431 | 321 | 531 | 364 | 345 |
| 5 | 2007-12-16 | 341 | 761 | 431 | 541 | 651 |
-----------------------------------------------------------------------------------------------------


CHAN
------------------------------------------------------------------------
| chanid | name | artiste |
------------------------------------------------------------------------
| ... | ... | ... |
| 321 | asdkjaskjdahskjas | kajhaskdja akjshd aksj |
| 143 | asdkjaskjdahskjas | kajhaskdja akjshd aksj |
| 634 | asdkjaskjdahskjas | kajhaskdja akjshd aksj |
| 365 | asdkjaskjdahskjas | kajhaskdja akjshd aksj |
| 343 | asdkjaskjdahskjas | kajhaskdja akjshd aksj |
| ... | ... | ... |
------------------------------------------------------------------------


Voilà, alors ce que j'ai besoin c'est de sortir pour une date de mon choix, les 5 tracks de ce jour là.
Donc je peux faire:
SELECT * FROM dec WHERE dec.date='$dec_date'

Mais après je sais pas comment faire pour associer les 5 track # avec les tracks correspondantes dans CHAN...???
Quelqu'un peut m'aider...

Merci beaucoup d'avance...!

7 réponses

jee pee Messages postés 40565 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 décembre 2024 9 459
20 déc. 2007 à 21:15
bonjour,

En mysql je ne connais pas , mais un sql je ferais :

select name, artist from chan
where chanid in (select track1, track2, track3, track4, track5 FROM dec WHERE dec.date='$dec_date' )

cdt
0
Ouais, je vois la logique là-dedans...

J'ai essayé le code suivant mais ça retourne une erreur (Operand should contain 1 column):
SELECT * FROM chan WHERE chanid IN (select track1, track2, track3, track4, track5 FROM dec WHERE dec.decid=3)

Avec le code suivant ça fonctionne:
SELECT * FROM chan WHERE chanid IN (select track1 FROM dec WHERE dec.decid=3)

Mais évidemment ça ne retourne pas toutes les possibilités...
Quelqu'un à une idée...
0
jee pee Messages postés 40565 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 décembre 2024 9 459
20 déc. 2007 à 21:51
SELECT * FROM chan WHERE chanid IN
(select track1 FROM dec WHERE dec.decid=3
union
select track2 FROM dec WHERE dec.decid=3
union
select track3 FROM dec WHERE dec.decid=3
union
select track4 FROM dec WHERE dec.decid=3
union
select track5 FROM dec WHERE dec.decid=3
)
0
Bon, ya peut-être un code plus efficace, mais j'ai réussi avec ce code:

SELECT * FROM chan WHERE chanid
IN (SELECT titre01 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre02 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre03 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre04 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre05 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre06 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre07 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre08 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre09 FROM dec WHERE dec.date='$dec_date') OR chanid
IN (SELECT titre10 FROM dec WHERE dec.date='$dec_date')
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ouais, les UNION doit fonctionner aussi...
Merci pour l'aide...
0
jee pee Messages postés 40565 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 décembre 2024 9 459
20 déc. 2007 à 21:56
le prb c'est que stocker dans un meme enregistrement un tableau de 5 occurences d'une meme données c'est contraire à la logique même d'une base de données relationnelle
0
Ouin... Je me doute que mes méthodes de programmation pourraient être beaucoup plus raffinées, mais on fait avec ce qu'on a..!

Là je me retrouve devant un 2e problème:
- Je suis capable de faire sortir les 5 ou 10 tracks pour une date donnée.
- L'affichage de ces tracks va chercher le nom des tracks dans une autre table (WHERE IN...).

Le problème c'est que cette page sert en fait à voir/modifier en même temps les tracks du jour. Donc faudrait que la liste de 10 tracks soit 10 dropdown avec la liste complète des tracks disponibles...

Donc je fais déjà un FOR dans mon code pour la liste de 10, la faudrait je fasse un autre FOR pour une autre requete (SELECT * FROM chan) pour populer mes 10 dropdown...

Donc un FOR dans un FOR...
Pis là ben ça me mets des erreurs...

J'sais pas si c'est assez clair ce que j'essaye de faire...
Merci...
0