Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [MySql] Estrarre record in base a un count

    Ciao ragazzi sto diventando matto con una query che non riesco ad improntare...

    ho queste tabelle:

    Tabella "messaggi"
    ID_PM
    User_ID
    Contenuto

    Tabella Invitati
    ID_Invitato
    PM_ID (id del messaggio a cui è riferito)
    User_ID

    Vorrei estrarre solo gli ID dei messaggi che hanno SOLO 2 invitati (il mittente e l'invitato) perchè se è maggiore di 2 allora è una conversazione multipla...

    Come posso fare questa cosa?

  2. #2
    Dovrei aver risolto in questo modo:
    codice:
       SELECT DISTINCT Invitati.PM_ID
       FROM Invitati
       INNER JOIN
        (
          SELECT PM_ID, COUNT(*) AS nr
          FROM Invitati
          GROUP BY PM_ID
          HAVING nr = 2
        ) AS top
      ON Invitati.PM_ID = top.PM_ID
      WHERE
      Invitati.User_ID = $MioID
    OK! ora vorrei mettere un altro filtro che mi faccia uscire solo i record dove ci sono io E un utente definito...

    io nella where ho messo:

    codice:
    Invitati.User_ID IN ( $MioID, $AltroUserID)
    ma in questo caso mi mostra sia quelli in cui ci sono io e sia quelli in cui c'è un altro utente....
    come la posso modificare?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    IN è equivalente a OR, a te serve AND

  4. #4
    Risolto!!!!
    Grazie!!

  5. #5
    ----------------------------------------------------
    nello spirito del forum, spiega come hai fatto (postando la soluzione), così aiuterai qualche altro forumista che dovesse avere lo stesso problema.
    ----------------------------------------------------

  6. #6
    nello spirito del forum, spiega come hai fatto (postando la soluzione), così aiuterai qualche altro forumista che dovesse avere lo stesso problema.
    Si si,la stavo mettendo "in ordine" così almeno anche gli altri possono vedere come mi è riuscito:


    codice:
       SELECT DISTINCT Invitati.PM_ID
       FROM Invitati
       INNER JOIN
        (
    	  SELECT PM_ID FROM Invitati
    	  WHERE User_ID = $MioID
        ) AS top
      ON Invitati.PM_ID = top.PM_ID
      WHERE Invitati.User_ID = $altroUtenteID
    Praticamente nella prima select nidificata faccio filtrare SOLO i record che si associano al MIO ID
    poi nella WHERE inserisco appunto la seconda condizione dove specifico qual è l'utente che DEVE esserci.

    Spero che vi possa essere di aiuto e che la spiegazione sia abbastanza esauriente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.