Maison  >  Questions et réponses  >  le corps du texte

Comment sélectionner, faire correspondre et renvoyer des valeurs dans une requête MySQL ?

J'ai deux tables, une table de transfert et une table club.

Voici le transfert de table :

id Nom Nom de famille Du club Aller au club Prix par numéro arrière Numéro de retour
0 Exemple 1 Exemple 2 EX3 EX4 Exemple 5 Exemple 6 Exemple 7

C'est le club de table :

id Abréviation Nom complet
0 EX3 Exemple 3
1 EX4 Exemple 4

Je veux prendre une ligne de la table de transfert, obtenir le fromclub, le faire correspondre à l'abréviation dans Clubs, obtenir le nom complet de la ligne et l'ajouter à la réponse. Je veux faire la même chose avec la colonne toclub. Ensuite, je veux le répéter pour toutes les autres lignes du transfert de table.

Pour faire simple, voici mon résultat attendu :

id Nom Nom de famille Du club Aller au club Prix par numéro arrière Numéro de retour Du nom complet du club nom complet du club
0 Exemple 1 Exemple 2 EX3 EX4 Exemple 5 Exemple 6 Exemple 7 Exemple 3 Exemple 4

Je n'arrive pas à trouver un moyen de créer une requête qui fasse cela sans obtenir environ 512 lignes de résultats, même si je n'ai actuellement que 8 lignes de résultats.

SELECT *
FROM transfers,
(SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.fromclub) AS fromclubfullname,
(SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.toclub) AS toclubfullname

Il renvoie 512 lignes et deux colonnes (appelées fullname) au lieu d'une colonne de clubfullname et toclubfullname.

P粉986028039P粉986028039183 Il y a quelques jours407

répondre à tous(1)je répondrai

  • P粉827121558

    P粉8271215582024-04-03 15:15:27

    Vous pouvez le faire via 左连接 -

    SELECT 
         transfers.*,
         c1.fullname as fromclubfullname,
         c2.fullname as toclubfullname FROM `transfers`
    LEFT JOIN clubs c1 ON (c1.abbr = transfers.fromclub)
    LEFT JOIN clubs c2 ON (c2.abbr = transfers.toclub)

    répondre
    0
  • Annulerrépondre