Dies ist die Abfrage, die ich zur Zeit bin mit:Wie ändere ich meine mysql-Abfrage so, dass Zeilen eingeschlossen werden, für die der innere Join keine Übereinstimmung findet?
SELECT
q1.item AS q1item,q1.store AS q1store,q1.marion AS q1marion,
q1.carbondale AS q1carbondale,q2.marion AS q2marion,q2.carbondale AS q2carbondale
FROM jdgower_items q1
INNER JOIN jdgower_items q2 ON q1.item=q2.item
AND q1.store_id=q2.store_id AND DATE(q1.datetime) = DATE(NOW())
AND DATE(q2.datetime) = DATE(NOW() - INTERVAL 1 DAY)
WHERE q1.store_id='$the_main_store_id' OR q1.competitor_id='$the_main_store_id'
ORDER BY q1.item ASC,q1.competitor_id ASC,q1.store DESC,q1.store_id ASC
Grundsätzlich ist die Idee, einen Artikel pro Reihe zu bekommen, mit dem Preis der heutigen und dem Preis von gestern ... zusammen mit all den Wettbewerbern mit Ich-Tracking ihre jeweiligen Preise. Das bringt mir genau das, was ich will, bis ich einen neuen Wettbewerber hinzufüge ... wenn dieser Wettbewerber keinen Eintrag für gestern hat, gibt es für diesen Wettbewerber in der Schleife nichts mehr. Ich bin mir ziemlich sicher, dass es etwas mit INNER JOIN in der Zeile "AND DATE (q2.datetime) = DATE (JETZT() - INTERVALL 1 DAY) zu tun hat", aber ich bin mir nicht sicher, wie ich das beheben soll. Vielen Dank für jede Hilfe im Voraus!
JOIN Vielen Dank für die Antwort und ich entschuldige mich für meine Unbeholfenheit ... wenn ich ‚inneren‘ auf ‚links‘ es zieht endet ändern alle Reihen, an denen ich nur heute und gestern ziehen möchte. – jdgower
Ich dachte: 'INNER jdgower_items q2 ON q1.item JOIN = q2.item UND q1.store_id = q2.store_id UND DATUM (q1.datetime) = DATE (NOW()) LEFT JOIN DATE (q2.datetime) = DATUM (JETZT() - INTERVALL 1 TAG) ' aber das wirft einen Syntaxfehler. – jdgower
oh ich verstehe. Ich habe nicht genug auf Ihre Anforderungen geachtet – haltabush