2016-03-21 4 views
0

Ich möchte eine MySQL-Tabelle mit der Aggregatfunktion auf JOIN ON-Anweisung beitreten. Ich bin mir nicht sicher, ob ich es richtig mache.mysql JOIN ON-Anweisung mit MAX-Funktionen

Hier sind meine Tabellen. Table_1 (drei Spalten):

  • ID
  • sid
  • tid

Table_2 (vier Spalten)

  • t2id
  • t2sid
  • t2tid
  • t2value

Table_3 (zwei Spalten)

  • t3id
  • t3title

Die ersten beiden Tabellen, Table_1 und Table_2 sie die Beziehung auf table_1.sid und table_2.t2sid, und ich habe kein Problem j sie zu salben.
Jetzt wollte ich die table_3.t3id an die table_2 t2tid = 2 dann table_t2value.

Hier ist, was ich bisher als MySql Aussage haben:

SELECT MAX(CASE WHEN table2.t2tid=1 THEN table_2.t2value AS 1stid), 
     MAX(CASE WHEN table_2.t2tid=2 THEN table_2.t2value AS 2ndid) 
FORM table_1 
LEFT JOIN table_2 
ON table_2.t2sid = table_1.sid 
LEFT JOIN table_3 
ON table_3.t3id = (i want to join the table_2.t2tid=3 THEN table_2.t2value) 

würde ich in der Lage sein, sie so, wie ich will mitmachen?

+0

"ich möchte die tabelle_2.t2tid = 3 THEN table_2.t2value" - was bedeutet das? Können Sie uns Ihre gewünschte Ausgabe zeigen? – WillardSolutions

+0

Hallo EPB, möchte ich die Tabelle_3.t3title Daten in meine Abfrageergebnisse. Hier erfahren Sie, wie die Tabellen gespeichert und miteinander verknüpft sind. table_1 und table_2 Spalte sid, dass zwei Spalten die Beziehung haben. Lassen Sie uns sagen, wenn ich die Tabelle_1.sid und die Tabelle_2.sid abfrage. Ich werde die folgenden Ergebnisse in der SELECT-Anweisung erhalten, da die ersten Ergebnisse von table_2.t2value und table_2.t2value stammen. Jetzt möchte ich die tabelle_3 table_3.t3id zu den reuslts der Tabelle_2.t2tid = 3 dann table_2.t2value JOIN. Ich hoffe das hilft. – slphp

Antwort

0

Meinst du etwas wie unten?

SELECT MAX(CASE WHEN table2.t2tid=1 THEN table_2.t2value AS 1stid), 
     MAX(CASE WHEN table_2.t2tid=2 THEN table_2.t2value AS 2ndid) 
FORM table_1 
LEFT JOIN table_2 
ON table_2.t2sid = table_1.sid 
LEFT JOIN table_3 
ON table_3.t3id = (case when table_2.t2tid=3 THEN table_2.t2value else null end) 
+0

Harsh, als ich den (case when) wie angegeben hinzugefügt habe, konnte ich das Ergebnis des table_3.t3title-Ergebnisses nicht erhalten. – slphp