recherche

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

Rechercher les utilisateurs qui visitent une seule ville au lieu de plusieurs villes dans MySQL [duplicata]

<p>J'ai un tableau avec l'identifiant de l'utilisateur, la ville et la date de réservation. J'ai besoin de connaître les utilisateurs qui ont visité une seule ville et non plusieurs villes au cours d'une plage de dates. </p> <pre class="brush:php;toolbar:false;">SELECT ID de l'utilisateur, ville, COUNT(*) comme résultat DE visites OÙ start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00 ET end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00 GROUP BY user_id, city</pre> <table class="s-table"> <tête> <tr> <th>user_id</th> <th>ville</th> <th>résultat</th> ≪/tr> ≪/tête> <corps> <tr> <td>10</td> <td>Munich</td> <td>1</td> ≪/tr> <tr> <td>11</td> <td>Barcelone</td> <td>2</td> ≪/tr> <tr> <td>11</td> <td>Berlin</td> <td>1</td> ≪/tr> <tr> <td>12</td> <td>Barcelone</td> <td>1</td> ≪/tr> <tr> <td>13</td> <td>Prague</td> <td>2</td> ≪/tr> <tr> <td>11</td> <td>Barcelone</td> <td>1</td> ≪/tr> <tr> <td>13</td> <td>Berlin</td> <td>1</td> ≪/tr> </tcorps> </tableau> <p>Les ID utilisateur 10 et 12 n'ont visité qu'une seule ville. Par exemple, l'ID utilisateur 11 s'est rendu à Barcelone deux fois. </p><p>J'ai essayé d'utiliser NOT EXISTING et INNER JOIN. Comment attirer les utilisateurs qui n’ont visité qu’une seule ville ? </p><p><br /></p>
P粉764785924P粉764785924521 Il y a quelques jours593

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

  • P粉147747637

    P粉1477476372023-07-25 10:55:52

    Veuillez ajouter la condition HAVING à votre requête :

    SELECT user_id, city, COUNT(*) as result
    FROM visits 
    WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00
    AND end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00
    GROUP BY user_id, city
    HAVING result = 1

    Si vous devez compter uniquement le nombre de villes uniques, vous pouvez utiliser COUNT(DISTINCT(city)) et les supprimer du regroupement comme ceci :

    SELECT user_id, city, COUNT(DISTINCT(city)) as result
    FROM visits 
    WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00
    AND end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00
    GROUP BY user_id
    HAVING result = 1

    répondre
    0
  • Annulerrépondre