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