> 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
58,99 €SSD WD Blue SN550 500 Go (NMVe M.2, 2400 Mo/s) à 58,99 €
Valable jusqu'au 10 Mai

Amazon fait une promotion sur le SSD WD Blue SN550 500 Go (NMVe M.2) qui passe à 58,99 € livré alors qu'on le trouve ailleurs à partir de 75 €. Ce SSD utilise une interface M.2 NVMe PCIe Gen3 x 4 pour une connexion simple et des performances exceptionnelles : jusqu’à 2 400 Mo/s en lecture séquentielle et jusqu’à 1 950 Mo/s en écriture séquentielle. Le SSD est doté de la technologie 3D TLC NAND haute densité offrant une endurance d’écriture durable et assorti d’une garantie de cinq ans. 


> Voir l'offre
5,99 €Opération Le Printemps des comics 2021 : sélection de comics à 5,99 €
Valable jusqu'au 11 Mai

Amazon participe à l'opération Le Printemps des comics 2021 où une sélection de comics vous est proposée à 5,99 €. Vous trouverez Venom, Spiderman, Haweye, Thanos, Thor, Hulk, Daredevil, Wolverine, ...


> Voir l'offre
199,99 €Box Android Nvidia Shield TV Pro 2019 16 Go avec télécommande à 199,99 €
Valable jusqu'au 10 Mai

Amazon fait une promotion sur l'excellente box Android Nvidia Shield TV Pro 2019 16 Go avec sa télécommande à 199,99 €. On trouve ailleurs ce pack à partir de 219 €. Compatible FullHD et 4K, vous pourrez utiliser vos applications Android, jouer et regarder des films et des séries en très haute résolution sur votre TV (compatible Kodi, Molotov, Netflix, YouTube ...). La box permet également de jouer à vos jeux PC diffusés en streaming directement avec une très faible latence.  La livraison est gratuite.


> 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