[social network]altro problema con la query e le "amicizie"

di il
2 risposte

[social network]altro problema con la query e le "amicizie"

Salve

Devo fare un piccolo social network per scambio "testi" (tipo comunità di scrittori) in cui devo inserire anche la funzione di ricerca per "tag"...


Son poco pratico della materia, dopo diversi tentativi ho ottenuto questa query... che sembra restituirmi il risultato giusto...pero' mi stampa tre righe per ogni risultato...sembra che il problema stia nell' unione con la tabella "Amici"... (tra l'altro mi cerca i risultati anche tra i testi di un utente che non è mio amico, ed io non voglio questo) ma non capisco dove stia l'errore...


la tabella TAG contiene:
Tag ed IDopera (chiave esterna all'opera a cui il tag si riferisce, un'opera puo' avere associati, chiaramente, più tag)

Poi c'è la tabella Amici:
con IDrichiedente, IDdestinatario e Approvato (che registra se la amicizia è accettata o meno)

E la tabella Opere
che contiene il L'IDopera, il Testo (che qui non ci serve), l'Approvazione (i testi non approvati dall'amministratore non dovrebbero essere visibili), la Visibilità

SELECT *
FROM tag
JOIN opere ON tag.IDopera = opere.ID
LEFT OUTER JOIN amici ON amici.IDrichiedente ='".$id_utente_che_effettua_la_ricerca."'
OR amici.IDdestinatario ='".$id_utente_che_effettua_la_ricerca."'
WHERE opere.Pubblico = 'soloamici'
AND amici.Amicizia = '1'
AND opere.Approvato = '1'
AND tag.Tag LIKE '%".$etichetta_da_ricercare."%'
OR opere.Pubblico = 'tutti'
AND opere.Approvato = '1'
AND tag.Tag LIKE '%".$etichetta_da_ricercare."%'

2 Risposte

  • Re: [social network]altro problema con la query e le "amicizie"

    Ciao alcor, vedo che il progetto procede... grande!

    Stavo dando un'occhiata alla query ma cosi faccio un po' fatica a capire cosa hai bisogno che faccia la query.
    Comunque da una prima occhiata mi sono accordo di un errore logico che ti segnalo:
    tu scrivi:
    WHERE opere.Pubblico = 'soloamici'
    AND amici.Amicizia = '1'
    AND opere.Approvato = '1'
    AND tag.Tag LIKE '%".$etichetta_da_ricercare."%'
    OR opere.Pubblico = 'tutti'
    AND opere.Approvato = '1'
    AND tag.Tag LIKE '%".$etichetta_da_ricercare."%'
    se la discriminante è il valore opere.Pubblico, dovresti modificarla cosi
    WHERE (opere.Pubblico = 'soloamici'
    AND amici.Amicizia = '1'
    AND opere.Approvato = '1'
    AND tag.Tag LIKE '%".$etichetta_da_ricercare."%')
    OR (opere.Pubblico = 'tutti'
    AND opere.Approvato = '1'
    AND tag.Tag LIKE '%".$etichetta_da_ricercare."%')
    inizia con questa correzione e vedi come va
  • Re: [social network]altro problema con la query e le "amicizie"

    Umhh... No... il problema è che mi restituisce 7 volte lo stesso risultato...
    Io vorrei che, inserito un certo tag, mi restituisca tutti i testi (che io ho i diritti per vedere: cioè i testi "privati" di amici o i testi visibili a tutti) che siano associati a quel tag specifico....

    Qui incollo il risultato di una query che dovrebbe avere un solo risultato...




    probabilmente c'è qualcosa di sbagliato a livello concettuale, non capisco cosa sia... in realtà mi ci intrafuno io stesso con quella query :-S
Devi accedere o registrarti per scrivere nel forum
2 risposte