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

MySQL récupère les données de plusieurs tables

J'ai un eg_design tableau avec les colonnes suivantes :

et eg_domains tableaux avec les colonnes suivantes :

et eg_fonts tableaux avec les colonnes suivantes :

Maintenant, sur la base de $domain_id, je veux obtenir toutes les données de la eg_design 表中的所有数据、eg_domains 表中的一些数据以及 eg_fonts 表中的 font_name 列值但是eg_design table, certaines données de la table et la valeur de la colonne font_name dans la table

mais

dans la eg_fonts 表中为我提供 2 个 font_name,就像在 eg_design table, j'ai

design_font

et

domain_font

Il y a 2 identifiants de police présents sur la colonne.

Donc, la requête ci-dessous devrait me donner 2 font_name de la table , tout comme dans la table , j'ai 2 identifiants de police présents.

$get_domain = mysqli_query( $mysqli, "SELECT edg.*, ed.domain_name, egf.* 
  FROM eg_design AS edg 
    LEFT JOIN eg_domains AS ed ON edg.domain_id = ed.domain_id 
    LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font AND egf.font_id = edg.domain_font 
  WHERE edg.domain_id = '$domain_id' ");
Mais je pense que pour cette ligne

egf.font_id = edg.design_font AND egf.font_id = edg.domain_font

La requête ci-dessus ne fonctionne pas.

Je veux dire que je peux obtenir toutes les données mais pas la valeur de la colonne font_name. Il renvoie uniquement la valeur de la colonne

design_font🎜, pas la valeur de la colonne 🎜domain_font🎜. 🎜 🎜Pouvez-vous m'aider à résoudre ce problème ? 🎜 🎜🎜C'est le violon : 🎜 https://www.db-fiddle.com/f/mNscdKDNohpT3xidp3C9Mw/0🎜
P粉092778585P粉092778585211 Il y a quelques jours562

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

  • P粉098417223

    P粉0984172232024-04-07 15:42:37

    Voir les réponses mises à jour

    https://www.db-fiddle.com/f/mNscdKDNohpT3xidp3C9Mw/5

    SELECT edg.*, ed.domain_name, egf.font_name
    FROM eg_design edg 
    LEFT JOIN eg_domains ed ON edg.domain_id = ed.domain_id 
    LEFT JOIN eg_fonts egf ON egf.font_title = edg.design_font 
    WHERE edg.domain_id = 1

    répondre
    0
  • P粉116654495

    P粉1166544952024-04-07 09:36:40

    En gros, vous venez de repartir rejoindre la même table eg_fonts deux fois.

    Voir dbfiddle. Vous pouvez essayer la requête suivante :

    $get_domain = mysqli_query( $mysqli, "SELECT edg.*, ed.domain_name, egf.font_name AS design_font_name , egf2.font_name AS domain_font_name
      FROM eg_design AS edg 
        LEFT JOIN eg_domains AS ed ON edg.domain_id = ed.domain_id 
        LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font 
        LEFT JOIN eg_fonts AS egf2 ON egf2.font_id = edg.domain_font 
      WHERE edg.domain_id = '$domain_id' ");

    Modifiez ceci :

    LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font AND egf.font_id = edg.domain_font

    À ceci :

    LEFT JOIN eg_fonts AS egf ON egf.font_id = edg.design_font 
    LEFT JOIN eg_fonts AS egf2 ON egf2.font_id = edg.domain_font

    répondre
    0
  • Annulerrépondre