Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente bannato
    Registrato dal
    May 2006
    Messaggi
    25

    [guru a me!] problema / LEFT JOIN con condizione AND!

    salve ho 3 tabelle:
    codice:
    tab1 (userid,username,password)
    tab2 (id,userid,titolo)
    tab3 (userid,parametro,valore)
    devo impostare una query che mi dia:

    codice:
    SELECT u.*, d.*,t.* from 
    tab1 as u,
    tab2 as d
    LEFT JOIN tab3 ON u.userid=t.userid
    //qui c'è il casino!!
    where
    u.userid=d.userid AND parametro = x
    il problema è proprio nell'AND parametro = x
    (se non ci fosse questa condizione sarebbe 1 normale LEFT JOIN)

    mentre

    DEVO poter considerare il caso che NON CI SIA il record con parametro=x evitando che non restituisca risultato, riuscendo comunque ad avere almeno i record delle prime 2 tabelle.


    come devo fare in qst caso?

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Innanzi tutto devi fare la join su tutte le tabelle o non le puoi collegare:

    esempio:

    select tab1.nome, tab2.nome, tab3.nome from tab1 left join tab2 on nome.tab1=nome.tab2 left join tab3 on nome.tab1=nome.tab3 where nome.tab1=x


    Se non le colleghi tutte non va.

  3. #3
    Utente bannato
    Registrato dal
    May 2006
    Messaggi
    25
    Originariamente inviato da marco80
    Innanzi tutto devi fare la join su tutte le tabelle o non le puoi collegare:

    esempio:

    select tab1.nome, tab2.nome, tab3.nome from tab1 left join tab2 on nome.tab1=nome.tab2 left join tab3 on nome.tab1=nome.tab3 where nome.tab1=x


    Se non le colleghi tutte non va.
    Cioè dovrei collegare le tabelle col loro nome anzichè coi campi?
    :master: :master:
    cmq provato e non va perchè nel where c'è una doppia condizione
    codice:
    where tab2id=$valore AND tab3.parametro=$numerox

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    where tab2id=$valore AND tab3.parametro=$numerox //qui intanto manca il punto dopo tab2

    where tab2.id=$valore AND tab3.parametro=$numerox

    Cmq per collegare le tabelle devi specificare per forza i campi che devono combaciare

    ossia :

    supponiamo che hai in tab 1 i nomi e in tab2 nomi e indirizzi

    select tab2.indirizzo from tab2 left join tab1 on tab1.nome=tab2.nome

    Cosi' ti prende il campo indirizzo della tabella 2 dove il campo nome corrisponde al campo nome dell'altra tabella

  5. #5
    Utente bannato
    Registrato dal
    May 2006
    Messaggi
    25
    trovato la soluzione!
    codice:
    SELECT u.*, d.*,t.* from
    tab1 as u,
    tab2 as d
    LEFT JOIN tab3 ON u.userid=t.userid AND parametro = x
    
    where
    u.userid=d.userid
    grazie lo stesso per il contributo!

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