Ho 2 tavoli, i ristoranti e gli ordini, tabella degli ordini hanno restaurant_id
, status
e date
campi, ogni giorno è una riga separata nella tabella degli ordini.LEFT JOIN con almeno una fila con condizioni da mysql destra
Devo filtrare i ristoranti e mostrare solo i ristoranti che hanno almeno una prenotazione per un intervallo di date, ma devo mostrarlo su un calendario, dovrebbe apparire come un elenco di ristoranti con informazioni.
Smth come questo
Quindi, vuol dire che se at least one day with reserved status
condizione è soddisfatta in quel intervallo di date, tutti gli ordini per quella intervallo di date per quel ristorante dovrebbero essere prelevati pure.
non riesco a fare partecipare a una consueta interna,
SELECT r.`id`, r.`name`, o.`date`, o.`status`
FROM restaurants r
INNER JOIN orders o ON r.id = o.restaurant_id AND o.date BETWEEN '2013-08-10' AND '2013-08-31'
AND status = 'reserved'
perché, in questo caso, per esempio, io non ho le informazioni di ordine per il 31 agosto, in occasione restaurant2, perché anche se è data la rabbia da 10 a 31, ma il suo stato è 'chiuso'. Quindi, sto pensando di fare un left join come questo
SELECT r.`id`, r.`name`, o.`date`, o.`status`, o.`id` order_id
FROM restaurants r
LEFT JOIN orders o ON r.id = o.restaurant_id AND
o.date BETWEEN '2013-08-10' AND '2013-08-31'
WHERE o.`id` IS NOT NULL
ma ho bisogno di aggiungere anche una condizione per assicurare che ci sia almeno una riga con lo stato di ordine = 'riservato', ho provato ad aggiungere dove clausola come COUNT(o.status = 1) > 0
ma dà un errore.
THanks
Utilizzare una sottoquery per ottenere i insipido con almeno un record in cui lo stato è riservato allora Y. Puoi usare un'unione interna. –
@DanBracuk Potresti espanderne un po '? Grazie – dav