Maison  >  Questions et réponses  >  le corps du texte

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

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粉038856725P粉038856725179 Il y a quelques jours334

répondre à tous(1)je répondrai

  • P粉529245050

    P粉5292450502024-04-05 00:40:32

    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

    répondre
    0
  • Annulerrépondre