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

    [MYSQL] query amici in comune

    Salve a tutti

    il mio problema riguarda le amicizie, in particolare gli amici in comune
    le tabelle utenti ed amici sono gestite nel seguente modo

    tabella users
    id username nome cognome
    1 test marco rossi
    2 a caio verdi
    3 b tizio blu

    tabella friends
    toid fromid
    1 2
    2 1
    1 3
    3 1
    e via discorrendo, quindi per ogni amicizia c'è andata e ritorno.

    se io sono l'utente con id 2 (id che prendo da $_SESSION[id]) e vado ad esempio nella pagina dell'utente con id 3 (che prendo da una variabile di tipo GET $_GET[id]), vorrei come output appunto "test" che è l'username dell'id (1) che abbiamo in comune


    spero di aver spiegato bene il problema

    Ringrazio tutti in anticipo

  2. #2
    ragioniamo

    tu sei id 1. per comodità il tuo id lo chiamiamo IdCurrent
    visiti la pagina dell'id 3. per comodità questo id lo chiamiamo IdPage

    quali sono i ituoi amici?

    SELECT FromId FROM friend WHERE ToId=IdCurrent

    quali sono gli amici dell'utente di cui stai visitando la pagina

    SELECT FromId FROM friend WHERE ToId=IdPage

    quali saranno gli amici in comune?

    SELECT TC.FromId FROM
    (SELECT FromId FROM friend WHERE ToId=IdCurrent) TC JOIN
    (SELECT FromId FROM friend WHERE ToId=IdPage) TP ON TC.FromId=TP.FromId

    that easy!

  3. #3
    mitico optime!grazie

    ho inserito la query e sembra che vada
    codice:
    $test_q = mysql_query("
    	SELECT TC.fromid FROM
    	(SELECT fromid FROM friends WHERE toid='$_SESSION[id]') TC JOIN
    	(SELECT fromid FROM friends WHERE toid='$row_id[id]') TP ON TC.fromid=TP.fromid
    ");
    $num_amicizie = mysql_num_rows($test_q);
    ultima domanda se è possibile. attualmente facendo il seguente ciclo
    codice:
    	while($rowamc1 = mysql_fetch_array($test_q)){
    		print(" $rowamc1[fromid] 
     ");
    	}
    mi sputa fuori gli id degli utenti. si può fare anche in modo di reperire il nick di quell'utente invece che l'id? così risparmio 1select nel while che è dispendiosa

  4. #4
    aggiungi in join la tabella users, no?

  5. #5
    codice:
    		SELECT TC.fromid, users.username FROM
    		(SELECT fromid FROM friends WHERE toid='$_SESSION[id]') TC JOIN
    		(SELECT fromid FROM friends WHERE toid='$row_id[id]') TP
    		ON TC.fromid=TP.fromid JOIN users WHERE id=TP.fromid
    ho messo il join alla fine, sembra che fa il suo dovere!

    sei stato gentilissimo

    Grazie!

  6. #6

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.