Lors de l'obtention de données de plusieurs tables, comment effectuer une requête en fonction des entrées de la table dans le regroupement SQL
P粉038856725
P粉038856725 2024-04-04 08:58:17
0
1
454

J'ai deux tables

  1. Cliquez sur 2.ride

Cliquez sur le tableau

heure d'id | Horaire des courses

id | horodatage

Je souhaite obtenir les données de deux tables GROUP BY EXTRACT(DAY FROMride.timestamp) Mais je n'obtiendrai les données que si j'ai des entrées dans les deux tables pour le même jour, mais j'ai besoin des données, que les deux tables n'aient pas de données ou non. Je ne sais pas si la jointure OUTER est une réponse mais MySQL ne prend pas en charge OUTER JOIN

Ma requête actuelle n'obtient les données que s'il y a des entrées dans les deux tables

COUNT(distinct ride.id) AS ride_ads, 
COUNT(distinct clicks.id) AS clicks
FROM ride INNER JOIN clicks ON EXTRACT(DAY FROM ride.timestamp)=EXTRACT(DAY FROM clicks.time)
GROUP BY EXTRACT(DAY FROM ride.timestamp), EXTRACT(DAY FROM clicks.time)```

P粉038856725
P粉038856725

répondre à tous(1)
P粉529245050
SELECT 
    DATE(ride.timestamp) AS Day,
    COUNT(DISTINCT ride.id) AS ride_ads,
    COUNT(DISTINCT clicks.id) AS clicks
FROM
    ride
        LEFT JOIN
    clicks ON DATE(ride.timestamp) = DATE(clicks.time)
WHERE
    DATE(ride.timestamp) > NOW() - INTERVAL 15 DAY
GROUP BY Day 
UNION SELECT 
    DATE(clicks.time) AS Day, #selecting date from second table since I might have record in this table and I am using group by Day 
    COUNT(DISTINCT ride.id) AS ride_ads,
    COUNT(DISTINCT clicks.id) AS clicks
FROM
    ride
        RIGHT JOIN
    clicks ON DATE(ride.timestamp) = DATE(clicks.time)
WHERE
    DATE(clicks.time) > NOW() - INTERVAL 15 DAY
GROUP BY Day
ORDER BY Day
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal