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

    [MySQL] 2 Query non correlate

    Ciao Raga,
    Scusate ma delle volte mi perdo probabilmente in cavolate, ho la necessità di avere un recordset con 2 soli campi, risultato di 2 raggruppamenti di 2 tabelle che non è possibile relazionare.

    E' possibile avere un unico output ?

    Mi spiego meglio;

    se ho 2 tabelle:
    tabella 1 e la tabella 2 e voglio conteggiare i records dell'una e dell'altra ed ottenere i risultati in un unico output con i 2 campi, si può fare ?

    totale_records_tab1 | totale_records_tab_2
    ------- 1500 ------ | ------ 890 -------





    .

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select 
    max(case when t = 1 then quanti else null end) as tabella1,
    max(case when t = 2 then quanti else null end) as tabella2 from (
    select count(*) as quanti,1 as t from tab1
    union
    select count(*),2 from tab2) as u

  3. #3
    Grazie nicola75ss,
    Ho provato ma c'è qualcosa che non va,
    evidentemente non riesco ad interpretare l'istruzione CASE

    Potresti spiegamerla brevemente ?


    ti ricodo che della tabella1 devo effettuare un SUM di un campo
    invece della tabella2 non avendo campi numerici devo effettuare un COUNT(campo)
    inoltre devo inserire una condizione ( WHERE) sul campo week della tabella 1;

    codice:
    week BETWEEN 1 AND WEEK( NOW( ) - INTERVAL 1 WEEK )


    thanks



    .

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Esegui le due query con tutte le condizioni che vuoi. L'importante è che ciascuna delle due restituisca un unico valore.


    select ..... quanti,1 as t from tab1
    union
    select ... ,2 from tab2) as u

    Al campo calcolato ho assegnato un alias di nome quanti, mentre con 1 e 2 indico semplicemente a quale tabella fa riferimento il valore quanti.

    A questo punto tramite max(case ... verifico a quale tabella appartiene quanti e lo visualizzo su un'unica riga.

  5. #5
    6 un Grande !!

    Funziona !!!!


    sbagliavo solo a non indicare il nome del campo in SUM(*)

    codice:
    select 
    max(case when t = 1 then quanti else null end) as tabella1,
    max(case when t = 2 then quanti else null end) as tabella2 from (
    select SUM(campo) as quanti,1 as t from tabella1
    WHERE week BETWEEN 9 AND WEEK( NOW() - INTERVAL 1 WEEK )
    union
    select count(campo),2 from tabella 2 ) as u
    10ks



    .

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.