Étant donné les tableaux:globale sur plusieurs conditions: se convertir à une seule requête
reservations (id, place_id, confirmed_at, paid_at)
et places (id, name)
Je dois retourner l'ensemble qui peut être exprimé les requêtes suivantes séparément:
-- Confirmed
SELECT places.id, places.name, COUNT(reservations.*) as total_confirmed
FROM reservations
INNER JOIN places ON places.id = reservations.place_id
WHERE
reservations.confirmed_at IS NOT NULL
GROUP BY places.id, places.name
-- Paid
SELECT places.id, places.name, COUNT(reservations.*) as total_paid
FROM reservations
INNER JOIN places ON places.id = reservations.place_id
WHERE
reservations.paid_at IS NOT NULL
GROUP BY places.id, places.name
-- Paid Uncofirmed
SELECT places.id, places.name, COUNT(reservations.*) as total_paid_unconfirmed
FROM reservations
INNER JOIN places ON places.id = reservations.place_id
WHERE
reservations.paid_at IS NOT NULL AND reservations.confirmed_at IS NULL
GROUP BY places.id, places.name
Comment puis-je réécrire ces requêtes dans un seul et retourner tout le nécessaire?
Je soupçonne que votre requête a quelques fautes de frappe, vous avez trois colonnes appelé « total_confirmed » – DaveRlz
s'il y a des endroits qui ne disposent pas de réservation ou peut avoir plusieurs réservation? cela affectera le 'SUM'. –
pouvez-vous le vérifier .. – jainvikram444