Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Estrarre soltanto quando records sono superiori a 3

    Ciao.

    Ho queste due tabelle in un database MYSQL:

    Tabella_A
    codice:
    ES	DATA		LINE
    DM40	06/02/2010	DM4040001 
    DM40	04/02/2010	DM4040417 
    DM40	06/02/2010	DM4040419 
    DM40	10/02/2010	DM4040606 
    DM40	09/02/2010	DM4040652 
    DM40	10/02/2010	DM4040652 
    DM40	09/02/2010	DM4040661 
    DM40	04/02/2010	DM4041401 
    DM40	10/02/2010	DM4047606 
    DM40	10/02/2010	DM4047607 
    DM40	06/02/2010	DM4047608 
    DM40	10/02/2010	DM4047608 
    DM40	10/02/2010	DM4047608 
    DM40	01/02/2010	DM4047901 
    DM40	10/02/2010	DM4048110 
    DM40	09/02/2010	DM4048204 
    DM40	05/02/2010	DM4049409
    Tabella_B
    codice:
    ES	DATA_EVENTO	LINE_MT
    VT	01/02/2010	DM4040303-P.ROMA
    VT	31/01/2010	DM4041100-DECRISTOFO
    VT	03/02/2010	DM4042905-S.LORENZO
    VT	04/02/2010	DM4043608-MURACCE
    VT	05/02/2010	DM4043807-M.RAZZANO
    VT	31/01/2010	DM4045402-PUCCI
    VT	31/01/2010	DM4045402-PUCCI
    VT	01/02/2010	DM4045501-SEMOVENTI
    VT	06/02/2010	DM4045501-SEMOVENTI
    VT	05/02/2010	DM4045509-MONTE ORO
    VT	06/02/2010	DM4045912-FORTUNA
    VT	04/02/2010	DM4047608-FEEDER
    VT	04/02/2010	DM4047608-FEEDER
    VT	04/02/2010	DM4047608-FEEDER
    VT	05/02/2010	DM4047608-FEEDER
    VT	03/02/2010	DM4048706-MUGNAINI
    VT	03/02/2010	DM4048706-MUGNAINI
    Come posso ottenere questo output: ?

    codice:
    line_a+b		count
    DM4047608-FEEDER	7
    Perchè contando nelle due tabelle il numero degli eventi associati alla LINE DM4047608-FEEDER è superiore a 3.
    In sostanza devo interrogare le due tabelle A e B ed estrarre soltanto quelle LINE il cui numero di eventi è sempre superiore a 3.

    Can you help me?
    Saluti

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select substring_index(line,'-',1) as radice,count(substring_index(line,'-',1)) as quanti from (
    select line from tabella_a
    union all
    select line_mt from tabella_b
    ) as tab
    group by radice
    having quanti > 3
    P.S. Se hai inserito le "date" in quel modo sono stringhe e come tali verranno trattate.

  3. #3
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Grazie 1000 è quello che mi serviva... scusa ma se volessi avere anche questo dettaglio posso farlo con la questa query:?

    codice:
    DO6038860 = 146
    
    Tabella A DO6038860 = 1
    Tabella B DO6038860 = 145
    Cioè sapere il dettaglio di eventi per quella line suddivisa per tabelle ?
    E poi per stampare anche gli altri campi della tabella, cioè la data, es, etc?

    La data è in formato AAAA-MM-GG.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per avere il conteggio relativo alle singole tabelle ti basta fare:

    codice:
    select substring_index(line,'-',1) as radice,
    sum(if(dove=1,1,0)) as line_a,
    sum(if(dove=2,1,0)) as line_b,
    count(substring_index(line,'-',1)) as quanti from (
    select line,1 as dove from tabella_a
    union all
    select line_mt,2 from tabella_b
    ) as tab
    group by radice
    having quanti > 3
    Per quel che riguarda la stampa delle altre informazioni non ho proprio capito.
    Per ottenere il conteggio devi necessariamente fare un raggruppamento, quindi cosa vorresti ottenere?

  5. #5
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Grazie 1000 va bene così
    Hai ragione in effetti le altre informazioni non servono.

  6. #6
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Ciao, scusa ma come faccio a «paginare» i risultati di questa query?:

    codice:
    select substring_index(line,'-',1) as radice,
    sum(if(dove=1,1,0)) as line_a,
    sum(if(dove=2,1,0)) as line_b,
    count(substring_index(line,'-',1)) as quanti from (
    select line,1 as dove from tabella_a
    union all
    select line_mt,2 from tabella_b
    ) as tab
    group by radice
    having quanti > 3
    Ho cercato sul forum ma ci sono esempi di paginazione di risultati di query molto semplificate... sai aiutarmi per favore?

  7. #7
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Ciao.

    Con la paginazione ho risolto, ma ho un nuovo problema:
    Come faccio a selezionare un campo presente in tabella A ma non in tabella B ?

    Ho scritto così ma va in errore:

    codice:
    select campoTabella_A as z, substring_index(line,'-',1) as radice,
    sum(if(dove=1,1,0)) as line_a,
    sum(if(dove=2,1,0)) as line_b,
    count(substring_index(line,'-',1)) as quanti from (
    select null, line, 1 as dove from tabella_b
    union all
    select campoTabella_A, line_mt, 2 as dove from tabella_a
    ) as tab
    group by radice
    having quanti > 3

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Puoi fare un esempio pratico di ciò che vuoi ottenere?

  9. #9
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da nicola75ss
    Puoi fare un esempio pratico di ciò che vuoi ottenere?
    Grazie, ci provo.

    codice:
    select substring_index(line,'-',1) as radice,
    sum(if(dove=1,1,0)) as line_a,
    sum(if(dove=2,1,0)) as line_b,
    count(substring_index(line,'-',1)) as quanti from (
    select line, 1 as dove_b from tabella_b
    union all
    select line_mt, 2 as dove_a from tabella_a
    ) as tab
    group by radice
    having quanti > 3
    
    response.write RS("radice")  & " = " & RS("quanti") & " ===> " &_
                   "tot A  = " & RS("dove_b") & " ; tot B = " & RS("dove_a") & "
    "
    Questo è l'output:
    codice:
    DM4047608 = 33 ===> tot A = 29 ; tot B= 4
    Ad ogni radice è associato in tabella A un campo che si chiama zn, dovrei avere un output del tipo:

    codice:
    zn = ????? ===> DM4047608 = 33 ===> tot A = 29 ; tot B= 4
    Ma il campo zn esiste solo in tabella A e NON in tabella B.

    Mi segui?

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.