suchen

Heim  >  Fragen und Antworten  >  Hauptteil

MySQL ruft Daten aus mehreren Tabellen ab

Ich habe eine eg_design Tabelle mit den folgenden Spalten:

- und eg_domains-Tabellen mit den folgenden Spalten:

- und eg_fonts-Tabellen mit den folgenden Spalten:

Jetzt möchte ich basierend auf $domain_id alle Daten in der eg_design 表中的所有数据、eg_domains 表中的一些数据以及 eg_fonts 表中的 font_name 列值但是eg_design-Tabelle, einige Daten in der -Tabelle und den font_name-Spaltenwert in der -Tabelle

abrufen, aber

in der eg_fonts 表中为我提供 2 个 font_name,就像在 eg_design-Tabelle habe ich

design_font

und

domain_font

In der Spalte sind zwei Schriftart-IDs vorhanden.

Die folgende Abfrage sollte mir also 2 Schriftartnamen aus der -Tabelle liefern, genau wie in der -Tabelle habe ich 2 Schriftart-IDs vorhanden.

$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' ");
Aber ich denke für diese Zeile

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

Die obige Abfrage funktioniert nicht.

Ich meine, ich kann alle Daten abrufen, aber nicht den Spaltenwert Schriftartname. Es wird nur der Spaltenwert

design_font🎜 zurückgegeben, nicht der Spaltenwert 🎜domain_font🎜. 🎜 🎜Können Sie mir helfen, dieses Problem zu lösen? 🎜 🎜🎜Das ist die Geige: 🎜 https://www.db-fiddle.com/f/mNscdKDNohpT3xidp3C9Mw/0🎜
P粉092778585P粉092778585234 Tage vor626

Antworte allen(2)Ich werde antworten

  • P粉098417223

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

    查看更新的答案

    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

    Antwort
    0
  • P粉116654495

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

    基本上,您只需左连接同一个表 eg_fonts 两次即可。

    请参阅 dbfiddle 。您可以尝试以下查询:

    $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' ");

    更改此:

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

    对此:

    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

    Antwort
    0
  • StornierenAntwort