Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problemi con JOIN

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143

    Problemi con JOIN

    salve a tutti, ho dei problemi a capire l'errore in questa join:
    se faccio:
    SELECT *
    FROM (SELECT p.ID_PAG,p.ID_HOST,p.ID_PATH,l.ID_LINK,l.ID_PAG_IN ,l.ID_PAG_OUT
    FROM (pagina AS p) JOIN (link AS l) ON p.ID_PAG = l.ID_PAG_IN
    GROUP BY p.ID_PAG) AS pag1
    funziona, è una semplice query che effettua una join tra 2 tabelle, raggruppa e dà un alias.
    Se la estendo, e diventa:
    SELECT *
    FROM (SELECT p.ID_PAG,p.ID_HOST,p.ID_PATH,l.ID_LINK,l.ID_PAG_IN ,l.ID_PAG_OUT
    FROM (pagina AS p) JOIN (link AS l) ON p.ID_PAG = l.ID_PAG_IN
    GROUP BY p.ID_PAG) AS pag1 JOIN
    pagina AS pa ON pag1.ID_PAG_OUT = pa.ID_PAG )AS pag2
    Dice errore di sintassi near l'ultima parentesi del codice che ho inserito.Non cambia nulla se non scrivo AS pag2. Qualcuno mi sa aiutare?
    Grazie, ciao

  2. #2
    Un parentesi chiusa non dovrebbe essere prima aperta? :master:

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Si, ho copiato male il codice col copia incolla, nel file sql ho controllato accuratamente il matching delle parentesi, praticamente ne va aggiunta una prima della prima select. Diciamo che credevo proprio fosse una questione di parentesi, poi ho provato a metterle un pò in tutti i modi, o non metterle dove magari mi parevano ridondanti, eppure l'errore rimane.
    Comunque, speriamo qualcuno abbia un' idea

  4. #4
    Mai visto una query cosi' ... rocambolesca....

    cancella tutto e riscrivila che fai prima...

    SELECT *
    FROM (SELECT p.ID_PAG, p.ID_HOST, p.ID_PATH, l.ID_LINK, l.ID_PAG_IN, l.ID_PAG_OUT
    FROM (pagina AS p)
    JOIN (link AS l) ON p.ID_PAG = l.ID_PAG_IN
    GROUP BY p.ID_PAG) AS pag1
    JOIN
    pagina AS pa ON pag1.ID_PAG_OUT = pa.ID_PAG )AS pag2



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Si è un pò contorta, ma non credo di essere poi tanto lontano dalla forma corretta: in pratica, tanto per rendere l'idea visto che il codice non credo sia molto chiaro, ho 3 tabelle, X Y e Z, devo fare delle join, selezionando mentre incontro le tabelle solo le colonne che voglio, da qui le select nidificate, e ottenere come tabella finale una cosa di questo tipo: XYXZ, cioè alcune colonne di X in join con Y, il tutto in join con X, il tutto in join con Z.
    Lo so, non è semplice

  6. #6
    Originariamente inviato da namek
    Si è un pò contorta, ma non credo di essere poi tanto lontano dalla forma corretta: in pratica, tanto per rendere l'idea visto che il codice non credo sia molto chiaro, ho 3 tabelle, X Y e Z, devo fare delle join, selezionando mentre incontro le tabelle solo le colonne che voglio, da qui le select nidificate, e ottenere come tabella finale una cosa di questo tipo: XYXZ, cioè alcune colonne di X in join con Y, il tutto in join con X, il tutto in join con Z.
    Lo so, non è semplice
    La query nificata e' alternativa al join....

    codice:
    SELECT .... 
    Tutti i campi delle tre tabelle che ti servono
    x.campo, y.campo, z.campo
    con eventuale alias se il nome del campo fosse uguale
    
    FROM tabella_Unione as x
    LEFT JOIN taby as y ON condizione di unione
    LEFT join tabz as z ON condizione di unione
    WHERE condizione di ricerca
    GROUP BY campo/i di raggruppamento
    ORDER BY
    LIMIT
    dovrebbe essere questa la struttura "pulita" della query.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.