Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Query: utilizzo di LEFT OUTER JOIN

    Ciao a tutti.

    Ho due tabelle in mysql:

    1) la tabella A che contiene 231.000 record
    2) la tabella B che contiene 220.000 record

    La differenza tra le due tabelle in numero di record è 11.000

    Devo controllare che i record presenti in tabella A e non contenuti in tabella B, vengano inseriti in tabella B ed ho scritto questa query:

    codice:
    SELECT
        t2.*
    FROM db.tbl_A t2
    LEFT OUTER JOIN db.tbl_B t1
    ON t1.CODICE_UNICO = t2.CODICE_UNICO
    WHERE
       t1.CODICE_UNICO IS NULL
          AND t1.DENOMINAZIONE IS NULL
          AND t1.LINEA IS NULL
    Ma il controllo eseguito con questa query invece di restituire 11.000 record ne restituisce 32.000.

    Cosa sto sbagliando ?
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  2. #2
    11.000 è la differenza nel numero
    32.000 sono i record differenti

    sono due conteggi diversi!

  3. #3
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    11.000 è la differenza nel numero
    32.000 sono i record differenti

    sono due conteggi diversi!
    Si questo lo so... il problema è che in tabella_B, dopo l'inserimento dei records che secondo la query non ci sono in tabella_B ma ci sono in tabella_A, mi ritrovo una serie di duplicati che estraggo con questa query:

    codice:
    SELECT 
    CODICE_UNICO, DENOMINAZIONE, LINEA, COUNT(*)
    FROM tabella_B
    GROUP BY CODICE_UNICO, DENOMINAZIONE, LINEA
    HAVING COUNT(*) > 1
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  4. #4

  5. #5
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Ho provato con le query da te suggerite ma mi hanno impallato mysql...

    Adesso ho provato così:

    codice:
    SELECT COUNT(DISTINCT CODICE_UNICO) FROM tabella_A;
    SELECT COUNT(DISTINCT CODICE_UNICO) FROM tabella_B;
    Ed ottengo questo risultato:

    tabella_A = 80731
    tabella_B = 80653

    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  6. #6
    prova ad esempio con

    SELECT CODICE_UNICO FROM tabella_A
    WHERE CODICE_UNICO NOT IN (SELECT CODICE_UNICO FROM tabella_B)

  7. #7
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    prova ad esempio con

    SELECT CODICE_UNICO FROM tabella_A
    WHERE CODICE_UNICO NOT IN (SELECT CODICE_UNICO FROM tabella_B)
    Anche qui mysql va in tilt...

    Questo è un esempio dei dati in tabella_B:

    codice:
    ID	CODICE_UNICO	NOME		BT	NUMERO
    22	DM20-2-000010	TREN TR M          A	3
    23	DM20-2-000010	TREN TR M          B	97
    24	DM20-2-000010	TREN TR M          C	30
    25	DM20-2-000010	TREN TR M          D	9
    26	DM20-2-000010	TREN TR M          E	14
    27	DM20-2-000010	TREN TR M          F	6
    28	DM20-2-000010	TREN TR M          G	65
    29	DM20-2-000010	TREN TR M          H	24
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  8. #8
    che vuol dire "va in tilt"? stai usando la versione flipper di mysql?

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Originariamente inviato da optime
    che vuol dire "va in tilt"? stai usando la versione flipper di mysql?
    Se esistesse sai le partite e quanti game over ....

    Vuol dire che l'utilizzo delle risorse mysql per eseguire quella query va alle stelle e sono costretto a riavviare il server...
    "Sono sempre più convinto che la religione sia soltanto un mucchio di idiozie. Mi sembra qualcosa che alcuni hanno inventato per far sì che tutti gli altri si comportassero in un certo modo.".

  10. #10
    ma quanti record hai nelle tabelle? va in crash con 80000 record?

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.