table : transmission
--------------------------------------------------------
ID ReqString Timestamp Actif
------- ------------- --------------------- --------
a O21 2016-05-02 10:03:27 1
a O20 2016-05-01 11:07:47 1
a O11 2016-05-02 09:27:53 1
b O20 2016-05-02 12:27:45 1
b O21 2016-05-01 09:32:55 1
ich abrufen müssen, für die gleiche ID, die neuesten Werte für ReqString wie O2% UND WIE O1%welche Art von Abfrage zu verwenden, um dies zu bekommen (links Arbeits join nicht)
ich versucht habe, das LINKE JOIN. Diese Abfrage funktioniert, wenn ich einen Wert in t1, aber nicht arbeiten, wenn ich keinen Wert für die Tabelle t1 haben ...
SELECT t1.ReqString AS O1, t2.ReqString AS O2, t1.Timestamp AS T1, t2.Timestamp AS T2
FROM transmission t1
LEFT JOIN transmission t2 ON t2.ID = t1.ID
AND t2.ReqString LIKE 'O2%'
AND t2.Actif=1
WHERE t1.ID = 'b'
AND t1.ReqString LIKE 'O1%'
AND t1.Actif = 1
ORDER BY t1.Timestamp DESC, t2.Timestamp DESC
LIMIT 1
Also, wenn ich die Abfrage für die ID-run = ‚a‘, ich muss
------------------------------------------------------------------------
O1 O2 T1 T2
------- --------- ----------------------- -------------------------
O11 O21 2016-05-02 09:27:53 2016-05-02 10:03:27
bekommen und wenn ich es für die ID = 'b' laufen, das Ergebnis wäre ich haben möchte ist
------------------------------------------------------------------------
O1 O2 T1 T2
------- --------- ----------------------- -------------------------
NULL O20 NULL 2016-05-02 12:27:45
Was ist, wenn es in t2 keinen Wert gibt? – ChiefTwoPencils
eigentlich, wenn ich keinen Wert in t2 habe, bin ich ok mit der linken Join ... – sincos
Sie fragen nach mehr als einer Abfrage. Der linke Join tut nicht das, was Sie brauchen, wenn in t1 kein Wert ist. Klingt für mich so, als ob Sie einen vollständigen Join möchten, bei dem Sie alle Übereinstimmungen jeder Anforderungszeichenfolge erhalten; Wenn die andere Tabelle keine Übereinstimmung hat, erhalten Sie für die Tabelle t1 oder t2 null. – ChiefTwoPencils