Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Discussione: Inner join 3 tabelle!!

  1. #11
    pensa che per farla funzionare avevo trovato questo metodo...

    Codice PHP:
    SELECT FROM follow_me as b,articoli as a,articoli_del as 
        WHERE a
    .id_user_send b.to_utenteid AND b.follow_blocker AND from_utenteid $id_utente 
        
    AND NOT a.id_articolo=c.ad_art_del  AND c.id_user_del=$id_utente 
    mi restituiva i record giusti ma non so se è ottimizzata come la tua...

  2. #12
    okkk!!!!
    Ottimizzato la tua query in questo modo:

    Codice PHP:

    SELECT 
    FROM articoli as A
       INNER JOIN follow_me F
       ON F
    .to_utenteid A.id_user_send AND F.from_utenteid=$id_utente
       WHERE 
       F
    .follow_blocker 1
       
    AND A.id_articolo NOT IN (SELECT ad_art_del FROM articoli_del as AD WHERE AD.id_user_del $id_utente AND AD.ad_art_del A.id_articolo)
       
    ORDER BY A.data_ora_art DESC 

    Ora è completamente funzionante! ho solo cambiato una cosa

    ON F.to_utenteid = A.id_user_send AND F.from_utenteid=$id_utente

    in questo modo se io seguo (to_utenteid) quell'utente che ha scritto l'articolo allora lo vedrò altrimenti no!


    Funziona grazie pictor!

  3. #13
    Errr... da come l'ho scritta io pensavo che from_utenteid fosse l'utente che inviava l'articolo, e che to_utenteid fosse il destinatario.
    Da come scrivi tu sembra l'opposto. E' così?

    Se è come dico io la modifica alla ON che hai fatto credo sia scorretta.
    Se invece l'utente che scrive e invia l'articolo è il to_utenteid allora ok; anche se cercherei un modo di fare
    codice:
    ON F.to_utenteid = A.id_user_send AND F.from_utenteid=AD.id_user_del
    ma non sono sicuro che dalla ON clause si riesca a vedere la tabella AD (che è in una sottoquery).
    Comunque farei una prova. Sarebbe più (diciamo) "corretto".

    Comunque quando c'è da fare una JOIN di relazione (e non una esclusione, come in questo caso con NOT IN) utilizza la clausola corretta; usa JOIN (INNER, LEFT o RIGHT).
    Velocizza i risultati e rende il codice SQL più pulito, separando i criteri di JOIN da quelli della WHERE.

    Spero funzioni tutto bene

  4. #14
    per semplificare di più le cose possiamo chiamare
    from_utenteid UTENTEA
    to_utenteid UTENTEB
    allora from_utente_id è l'utente che segue l'utente to_utenteid

    e infatti non è detto che UTENTEB segua a sua volta il canale di UTENTEA

    quindi facciamo caso io segua il tuo canale,io sarò nella tabella dentro from_utenteid e tu dentro to_utenteid ,quindi se tu scrivi qualcosa il tuo id verrà scritto nella tabella articoli e io seguendo il tuo canale lo visualizzerò...

    Che giro di parole

  5. #15
    Sì, non ti spieghi benissimo

    Comunque mi confondeva il FROM e TO.

    Avrei fatto nella tabella FOLLOW chi è seguito WHO (piuttosto che TO) e seguito da FROM.

    Ma son cazzate, lasciamo perdere

  6. #16
    Nelle tabelle che sto creando sto cercando di migliorare la terminologia
    per me è logico che è chiaro ma poi se qualcuno legge quello che ho scritto non ne capisce qual è il capo e quale la coda

    Si può migliorare soltanto continuando e continuando e continuando a programmare,per cui piano piano riuscirò a essere sempre più chiaro

    Grazie tante per l'aiuto!!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.