> 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
23,93 €Enceinte Portable Bluetooth JBL Go 2 à 23,93 € livrée
Valable jusqu'au 20 Juin

Amazon Espagne fait une promotion sur l'enceinte portable JBL Go 2 qui passe à 19,03 € (avec la TVA ajustée). Comptez 4,90 € pour la livraison en France soit un total de 23,93 € livrée alors qu'on la trouve ailleurs autour de 35 €. Vous pourrez écouter la musique d'un smartphone, d'une tablette ou d'un baladeur grâce à sa connexion sans fil bluetooth ou avec sa connexion filaire jack 3.5 mm. Cette enceinte ultra légère et robuste peut être emportée partout avec vous. Elle est étanche IPX7 pour piscine, plage et salle de bain. Plusieurs couleurs sont disponibles.


> Voir l'offre
899 €TV 70 pouces Philips The One (4K UHD, Ambilight, Android) à 899 €
Valable jusqu'au 20 Juin

Darty fait une promotion sur la TV 70 pouces Philips The One qui passe à 899 € au lieu de 1299 €. La TV possède une dalle 4K UHD HDR10+, Ambilight sur 3 côtés, avec Android TV, Google Assistant intégré, Chromecast intégré et Bluetooth. 


> Voir l'offre
489,90 €Kit évolution PC : AMD Ryzen 7 5800X + carte mère Asus TUF B550-Plus à 489,90 €
Valable jusqu'au 19 Juin

RueDuCommece fait une promotion sur le kit évolution PC comprenant le tout nouveau processeur AMD Ryzen 7 5800X et une carte mère Asus TUF B550-Plus qui passe à 529,90 €. Or Asus rembourse 40 € pour l'achat de ce kit qui vous reviendra à 489,90 € au lieu de 599 €.


> 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