Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Inner join 3 tabelle!!

  1. #1

    Inner join 3 tabelle!!

    Ragazzi mi servirebbe un aiuto con una query...
    Dovrei fare una join con tre tabelle m non ci riesco.. Voglio estrarre i dati da una tabella articoli solamente se seguo il canale dell'utente che l'ha scritto e voglio mostrarlo a meno che io non l'abbia eliminato dalla mia visualizzazione(gli altri lo continueranno a vedere)

    TABELLA ARTICOLI:
    id_articolo
    id_user_send
    titolo_articolo
    articolo
    data_ora_art

    TABELLA ARTICOLI_DEL
    id_del (chiave primaria)
    id_art_del (chiave connessa alla tabella articoli id_articolo)
    id_user_del (id dell'utente che non vuole visualizzare questo articolo)


    TABELLA FOLLOW_ME
    id_follow
    from_utenteid
    to_utenteid
    follow_blocker

    SE IL FOLLOW BLOCKER E' IMPOSTATO A 1 ALLORA LA NEWS LA PUO' LEGGERE
    SE IL FOLLOW BLOCKER E' IMPOSTATO A 0 ALLORA LA NEWS NON LA PUO' LEGGERE

    Come posso fare??

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    270
    select articoli.* from articoli,articoli_del,follow_me where id_articolo=id_art_del and id_user_del=to_utenteid and follow_bloker=1;

    cosi potrebbe andare.
    (dico potrebbe perche non si è capito molto il risultato che vuoi ottenere)

  3. #3

    ah si possono anche selezionare tre tabelle direttamente senza dover fare mille join...

    Praticamente spiegandomi meglio vorrei:
    estrarre dalla tabella articoli tutti i record scritti da persone da cui seguo il canale(dalla tabella follow me)e da cui non sono bloccato(perchè magari un utente non vuole che lo seguo e quindi mi imposta il blocker a 0) e devo estrarre solo quelli che non ho cancellato perchè dato che più utenti potrebbero seguire lo stesso utente,tutti quelli devono poter visualizzare l'articolo scritto quindi ho creato una tabella (articoli_del) dove metto il mio id e l'id dell'articolo che non voglio più visualizzare..


    se non mi sono spiegato sbatto la testa al muro

    ahahahah!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    270
    ok continuo a non cabire molto ma la query sopra dovrebbe andare.

    cmq guarda che le join ci sono

  5. #5
    non va...perchè se l'id dell'articolo è anche nella tabella articoli.del NON mi deve mostrare la riga,così come se il follow blocker è impostato a 0 NON la deve mostrare....

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    270
    infatti non te la mostra se il bloker è 0

  7. #7
    Allora sono riscito a perfezionare la query in modo che mi visualizza solo gli articoli degli utenti che seguo e da cui non sono bloccato...


    Codice PHP:
    SELECT FROM articoli as a,follow_me as b where a.id_user_send b.to_utenteid and b.follow_blocker and from_utenteid $id_utente ORDER BY data_ora_art 
    Ora dovrei aggiungere una cosa...Ovvero se io ho inserito l'id di quell'articolo nella tabella

    articolo_del (ovviamente anche il mio id utente) allora la query NON me lo deve estrarre...


    Come posso fare? Mi serve una INNER JOIN??

  8. #8
    Bene ho creato una query funzionante solo che ho un problema...

    Codice PHP:
    SELECT FROM follow_me as b,articoli as 
        INNER JOIN articoli_del 
    as c ON a.id_articolo=c.ad_art_del  AND c.id_user_del=$id_utente 
        WHERE a
    .id_user_send b.to_utenteid and b.follow_blocker and from_utenteid $id_utente 
        ORDER BY data_ora_art 
    Solo che non riesco a configurare bene questa maledetta JOIN io vorrei che se i campi
    id_articolo=ad_art_del
    e
    from_utenteid = $id_utente
    non mi visualizzi il record!
    Effettivamente nella tabella Articoli_del metto l'id dell'articolo e l'id dell'utente che non vuole visualizzare quello specifico articolo!!
    Come posso modificarla?

    Nel caso che ho messo ora ovvero con la INNER JOIN mi estrae proprio quello inserito,se metto il LEFT OUTER JOIN mi estrae tutti i record mentre se metto il RIGHT OUTER JOIN mi estrae la stessa cosa della INNER...Cosa devo modificare?

  9. #9
    codice:
    SELECT * FROM articoli A
    INNER JOIN Follow_me F
      ON F.From_Utente_Id = A.Id_user_send 
    WHERE 
      F.Follow_blocker = 1
    AND A.Id_Articolo NOT IN (SELECT A .Id_Articolo_Del  FROM Articoli_DEL AD WHERE AD.Id_User_Del = $Id_Utente AND AD.Id_Art_Del = A.Id_Articolo)
    Prendo tutti gli articoli e li collego con Follow_Me tramite l'idutente (su From_IdUtente) che mi fornisce il follow_blocker (che cercherò con valore 1 nella WHERE) E l'id degli utenti che sguono il canale.
    Infine filtro per l'utente che sono io (con AD.Id_User_Del = $id_utente), ovviamente in relazione solo agli articoli che combaciano (non vorrei mi nascondesse l'articolo A perchè ho un record che mi dice che non posso vedere l'articolo B).
    Infine rimuovo questi ultimi risultati con NOT IT.

    Mi son spiegato malissimo e forse non funzionerà neanche la query.

    Però provala e falla funzionare. Ci sta che sia giusta!

  10. #10
    ....grazie infiniteeee!!!!!!!!!!!!
    Sempre grandissimo!!!

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.