Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    SQL: query JOIN tra 2 database

    Ciao Raga,
    in una query:
    SELECT M FROM T JOIN ensemble.S ON T.R = ensemble.S.codice WHERE Catalog='$Catalog' AND R!=''";
    il problema sta qui:
    ensemble.S.codice (2 punti)
    non riesce a selezionare il valore S.codice ho provato a mettere una parentesi o degli apici ma non va...
    come posso puntare il valore S.codice su di un'altro database ensemble?
    grazie
    Gio
    Giò MBG

  2. #2

    Re: SQL: query JOIN tra 2 database

    Originariamente inviato da GioMBG

    il problema sta qui:
    ensemble.S.codice (2 punti)
    non riesce a selezionare il valore S.codice ho provato a mettere una parentesi o degli apici ma non va...
    Gio
    Prova ad usare l'alias:

    1) database1.tab1 - database2.tab2

    selezioni il database1

    codice:
    use database1
    
    select *
    from tab1 as t1
    inner join database2.tab2 as t2
    on t1.R = t2.S
    WHERE ......

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

  3. #3

    presumo di aver capito male.

    ciao Piero,
    mi sa che ho capito male:
    praticamente ho asializzato: ensemble.S AS TAB1
    non funziona:
    SELECT M FROM T JOIN ensemble.S AS TAB1 ON T.R = TAB1.codice WHERE Catalog='$Catalog' AND R!=''";
    presumo di aver capito male.
    Gio
    Giò MBG

  4. #4

    Re: presumo di aver capito male.

    Originariamente inviato da GioMBG
    ciao Piero,
    mi sa che ho capito male:
    praticamente ho asializzato: ensemble.S AS TAB1
    non funziona:
    SELECT M FROM T JOIN ensemble.S AS TAB1 ON T.R = TAB1.codice WHERE Catalog='$Catalog' AND R!=''";
    presumo di aver capito male.
    Gio
    Devi precisare meglio la query. Siccome usi due db diversi devi considerare DOVE sei posizionato per eseguire la query. Poi se la query non va rende sicuramente un errore che ne spiega il motivo. Per esperienza ti diro' inoltre che le query fasulle tanto per capire la mimica spesso non hanno corrispondenza con la query reale. Posta la stringa dell'errore. Non funziona serve a nessuno.

    Select M from T significa che sei nel database di T e che M e' univoco tra le due tabelle

    JOIN dovresti precisare il tipo: inner | left | right

    inner join ensemble.S as TAB1 ON T.R = TAB1.codice

    WHERE T.Catalog = '$Catalog' AND T.R != ''"; devi mettere la tabella/alias.campo se non e' univoca e gli spazi tra gli statement, SQL e' piu' pretenzioso del php.

    perche' chiedi una equi-join "ON T.R = TAB1.codice" e poi chiedi nel where che T.R non sia vuoto.... hai forse la condizione di T.R vuoto e TAB1.codice vuoto????

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

  5. #5

    non da errore

    CIao Piero,
    giuro: non da errore, in questi casi pasto SEMPRE la query su phpmyadmin per provare prima la soluzione...
    ad ogni modo inserendo LEFT JOIN vedo i dati del database di T ma non estrappolo il dato M che sta nella ensemble.S
    posso avere dati di R = NULL quindi è per quello che ho inserito nella condizione di non prelevarli.
    scusa: un'esempio di JOIN fra 2 database che funge?
    Gio
    Giò MBG

  6. #6
    left join prende TUTTI i record della tabella a sx (quella in from) e le equi-join oppure NULL nella tabella in left join (right join fa il contrario)

    un esempio lo hai gia visto nel primo post che ho messo.

    Ripeto: posiziona i campi con la tabella/alias utilizzati. Es:

    codice:
    select tab1.campoA, tab2.campoB, tab2.campoC
    from tabella1 as tab1
    inner join database.tabella1 as tab2
             on tab1.R = tab2.codice
    where tab1.Catalog = '$pippo' 
             AND
             tab1.R != ''
    tieni sempre presente che nel result set i campi con lo stesso nome si sovrascrivono.

    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.