Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    [MySQL] il contrario della inner join

    Ho 6 tabelle, una principale collegata 1->n con le altre 5 tabelle. Nella tabella1 c'è un campo per ogni id della tabella collegata.

    Per tirare fuori tutti i dati faccio una select con 5 inner join, una per ogni tabella.

    La cosa strana è che se faccio una select sulla sola tabella1

    SELECT * FROM tabella1

    tiro fuori 2.247 record, se faccio la select con le 5 inner join tiro fuori 2.244 record....dove vanno a finire quei 3 record di differenza? La inner join non tira fuori tutti i dati incrociati anche se non c'è corrispondenza?? Se così fosse, perchè mi perdo per strada 3 record??

    Si può fare una sorta di inner join al contrario per tirare fuori quelle 3 istanze che non si collegano con le altre tabelle? Sempre se il problema sia questo....

  2. #2
    LA inner join tira fuori solo i dati con corrispondenza valida. In pratica solo le equi-join.

    Se vuoi tutti i dati della tabella principale devi usare LEFT JOIN sulle altre.

    in questo modo avrai tutti i record della tabella principale in FROM e NULL nei record mancanti di id relazionato nelle altre tabelle .

    Basta cercare col where dove questi campi delle tabelle in left join sono NULL

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

  3. #3
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da piero.mac
    LA inner join tira fuori solo i dati con corrispondenza valida. In pratica solo le equi-join.

    Se vuoi tutti i dati della tabella principale devi usare LEFT JOIN sulle altre.

    in questo modo avrai tutti i record della tabella principale in FROM e NULL nei record mancanti di id relazionato nelle altre tabelle .

    Basta cercare col where dove questi campi delle tabelle in left join sono NULL
    grazie, li ho trovati, 3 record non corrispondenti, avevo fatto un po' di confuzione tra la inner join e la left join! Grazie

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.