> Tous les forums > Forum des Webmasters
 2 champs liés à une tableSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Kyna
  Posté le 29/01/2011 @ 18:03 
Aller en bas de la page 
Petite astucienne

Bonjour à tous!

j'ai des complications avec une requête... j'aimerais avoir un coup de main sur ceci
j'ai deux tables "equipe" et "calendrier_complet"

equipes
id_equipe | nom_equipe
----------------------
1 | drummondville
2 | st-lambert
3 | longueuil
4 | st-constant
5 | st-hubert
6 | laval

calendrier_complet
date | visiteur | receveur | no_partie
----------------------------------------------------
1 jan | 1 | 6 | p1
2 jan | 2 | 5 | p2
3 jan | 3 | 1 | p3
4 jan | 4 | 5 | p4
5 jan | 2 | 6 | p5
6 jan | 1 | 4 | p6

J'aimerais avoir les dates et les noms des équipes qui contient l'équipe d'ont l'id = 1

J'ai commencé de cette façon, mais ça ne va pas du tout...

// Requête pour afficher le calendrier de la ligue
$sql = "SELECT * FROM calendrier_complet, equipes
WHERE calendrier_complet.visiteur = equipes.id_equipe
AND calendrier_complet.receveur = equipes.id_equipe
AND calendrier_complet.visiteur = '".$equipe."'
OR calendrier_complet.receveur = '".$equipe."'
ORDER BY date ASC, no_partie ASC";

est-ce que quelqu'un a une idée?



Modifié par Kyna le 30/01/2011 02:53
Publicité
Cedders
 Posté le 30/01/2011 à 23:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Il me semble qu'il y a deux problèmes, à tester car je suis pas un pro du SQL dans ce genre de situation ^^ :

Ton test de jointure devrait être avec un OR. Ainsi, il me semble que seul si l'id de l'équipe visiteur et receveur sont égales tu auras un résultat

WHERE calendrier_complet.visiteur = equipes.id_equipe
AND calendrier_complet.receveur = equipes.id_equipe

Ensuite, tu devrais isolé tes conditions de jointure des conditions de recherche.

Essaye donc un truc comme ça :

// Requête pour afficher le calendrier de la ligue
$sql = "SELECT * FROM calendrier_complet, equipes
WHERE (calendrier_complet.visiteur = equipes.id_equipe OR calendrier_complet.receveur = equipes.id_equipe)
AND (calendrier_complet.visiteur = '".$equipe."' OR calendrier_complet.receveur = '".$equipe."')
ORDER BY date ASC, no_partie ASC";

J'espère n'avoir pas dit de bêtise, dans tel cas, une autre âme charitable nous corrigeras :D

Kyna
 Posté le 01/02/2011 à 01:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Merci Cedder de m'aider, j'ai pris note de tes conseils, mais malheureusement cela ne fonctionne pas. J'ai de la difficulté à comprendre ce que cela me retourne, mais je sais que les équipes ne sont pas bien identifiées :(

C'est la première fois que je me retrouve face à cette situation, peut être qu'il va falloir que je me tourne vers la fonction « group by »

Cedders
 Posté le 02/02/2011 à 23:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

tu arrives à faire un export de tes 2 tables en SQL et mettre le code ici ?

Comme ça je peux directement tester sur mon pc avant de te balancer des pseudo solutions :D



Modifié par Cedders le 02/02/2011 23:18
Kyna
 Posté le 03/02/2011 à 01:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Rebonjour voici les deux tables http://www.cijoint.fr/cjlink.php?file=cj201102/cij1uo4BqU.zip

j'ai pas tout importé, mais je crois que c'est suffisant pour faire les tests.

merci encore pour ton aide

Kyna
 Posté le 03/02/2011 à 03:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

J'ai trouvé

Avec l'aide de ce site http://www.transio.com/content/sql-multiple-joins-single-table-relationship

voici ma requête

SELECT * FROM (
SELECT c.*,
e1.nom_equipe AS nomVisiteur,
e2.nom_equipe AS nomReceveur
FROM calendrier_complet AS c
INNER JOIN equipes AS e1 ON c.visiteur = e1.id_equipe
INNER JOIN equipes AS e2 ON c.receveur = e2.id_equipe
) AS calendrier
WHERE calendrier.visiteur = 1 OR calendrier.receveur = 1
ORDER BY calendrier.date ASC, calendrier.no_partie ASC

Merci de m'avoir encouragé!

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
199,99 €Casque sans fil à réduction de bruit Sony WH-1000XM3 (Hi-Res Audio, Bluetooth/NFC) à 199,99 €
Valable jusqu'au 26 Juin

Darty propose actuellement l'excellent casque sans fil à réduction de bruit et Hi-Res Audio Sony WH-1000XM3 à 199,99 € grâce au code promo SON30. On le trouve ailleurs à partir de 300 €. Jusqu'à 30h d'autonomie avec la fonction de réduction de bruit activée et fonction Quick Attention pour réduire instantanément le volume de votre musique et pouvoir suivre une conversation. 


> Voir l'offre
17,99 €Webcam BCMaster FullHD à 17,99 € (via coupon)
Valable jusqu'au 27 Juin

Amazon propose la webcam Webcam BCMaster (groupe Aukey) FullHD à 17,99 € grâce à un coupon à activer sur la page du produit. On la trouve habituellement autour de 29,99 €. Cette webcam offre une résolution FullHD 1080p pour une vidéo claire et nette et intègre deux microphones réduisant les bruits de fond. De plus, un cache de protection vous offre une sécurité supplémentaire et une tranquillité d'esprit lorsque vous n'utilisez pas la webcam. Elle est compatible Windows, Mac et Android. 


> Voir l'offre
34,99 €Casque-micro filaire Corsair HS35 à 34,99 €
Valable jusqu'au 26 Juin

Cdiscount fait une promotion sur le casque-micro filaire Corsair HS35 qui passe à 34,99 € au lieu de 48 €. Le fil mesure 1,80 m et le casque dispose d'un bouton pour couper / activer le micro. Utilisable sur PC, Xbox One, PS4, Nintendo Switch et appareils mobiles.


> Voir l'offre

Sujets relatifs
Suppression champs table selon critère
affichage table par odre alphabétique
tester un champs mysql
Considérer un champs vide mysql non null
Optimiser requête lourde (Copying to tmp table ?)
Différence ...< div > VS < table >
Urgent : optimisation de table
Vérifier les champs des formulaires
déplacement de données d'une table à une autre
masquer une colonne d'une table
Plus de sujets relatifs à 2 champs liés à une table
 > Tous les forums > Forum Forum des Webmasters