Ich habe zwei Tabellen mit einer eins zu viele Beziehung. Ort und Promo. Ein Ort kann mehrere Promos haben, die am Tag der Woche gelten.MySQL Bedingte LINKE JOIN
Vereinfachen (die meisten Spalten sind weggelassen), das sind die Tabellen:
Platz
idnum nombre
--
42 SUBWAY
55376 ANTOJERIA MAKECH
50112 TORTAS BERNAL LAS ORIGINALES DESDE 1960
55185 LA MARINERA
Promo
idnum titulo dia idcliente
135 Pescado Frito 2 x 1 Lunes 55185
136 Pescado Frito 2 x 1 Martes 55185
137 Margaritas 2 x 1 Jueves 55185
138 Tacos 3 x 2 Viernes 55185
139 5 cervezas Sabado 55185
Ich möchte eine Abfrage erstellen, die mir Ergebnisse alle Platz bekommt und, falls verfügbar, erhält ich die entsprechende Promo. Dies ist die Abfrage Ich habe bisher:
SELECT * FROM (SELECT d.nombre, a.dia, a.descripcion FROM directorio as d LEFT JOIN avisos as a ON d.idnum = a.idcliente WHERE palabras LIKE "%Marinera%" LIMIT 15 OFFSET 0) AS t WHERE t.dia = "Sabado" OR t.dia IS NULL;
Es funktioniert gut, wenn dia die Abfrage (in diesem Fall „Sabado“) übereinstimmt oder wenn dia NULL ist (für, wenn der Ort hat keine Promos); aber das Problem kommt, wenn der Ort Promos hat, aber keiner von ihnen passt dia ... in diesem Fall möchte ich immer noch den Rekord mit Null-Werte auf den Promo-Spalten.
Sie brauche eine Menge aller Dias, die du für einen äußeren Join verwenden kannst. – JimmyB