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

    Più select all'interno della stessa query

    Salve a tutti,


    ho la necessità di fare una select da una serie di tabelle e un'altra (una SELECT COUNT(*)) da un'altra tabella e mostrare i risultati in una unica tabella.
    Come posso fare?

    Con UNION dovrei avere lo stesso numero di colonne tra le due select, mentre così non è perché l'ultima è una soltanto.

    Ho visto che alcuni usano delle select innestate, ma a me personalmente non funziona...

    La query sarebbe questa:

    codice:
            $query = "SELECT ROUND(AVG(Cortesia),2) as Media_cortesia, ROUND(AVG(Capacita_linguistiche),2) as Media_linguistiche, ROUND(AVG(Bagaglio_culturale),2) as Media_cultura,"
                     ." ROUND(AVG(Capacita_organizzative),2) as Media_organizzative, COUNT(DISTINCT(recensioni.Id)) as nRecensioni, ROUND( ( (AVG(Cortesia) + AVG(Capacita_linguistiche) + AVG(Bagaglio_culturale) + AVG(Capacita_organizzative)) / 4), 2) as Media_tot,"
                     ." FROM recensioni"   
                     ." WHERE Attivita IN (SELECT Id FROM attivita WHERE Cicerone = $id), "
                     ." (SELECT COUNT(Id) FROM attivita WHERE Cicerone = $id) as nAttivita)";
    Ultima modifica di the_indios; 21-09-2020 a 09:19

  2. #2

  3. #3
    Daccordo, ma nel mio caso sono molto diverse le query da unire, non c'è nemmeno un campo in comune.

    Se aggiungo le colonne fittizie alla seconda tabella con:

    SELECT COUNT(Id) as nAttivita, 0, 0, 0, 0, 0 FROM attivita WHERE creatore = $id)

    non risolvo niente perché nAttivita non compare nella tabella finale ma il suo valore si incolonna al di sotto del primo campo della precedente.
    Ultima modifica di the_indios; 21-09-2020 a 09:46

  4. #4
    Quote Originariamente inviata da the_indios Visualizza il messaggio
    ....
    nAttivita non compare nella tabella finale ma il suo valore si incolonna al di sotto del primo campo della precedente.
    prova a mettere

    (SELECT COUNT(Id) FROM attivita WHERE Cicerone = $id) as nAttivita)

    prima del FROM

  5. #5
    con quello che ti ho scritto puoi non avere alcun dato in comune

    A1 | 0 | 0 | 0 | 0
    0 | B1 | B2 | B3 | B4


  6. #6
    Risolto con un RIGHT JOIN

  7. #7
    Piuttosto, se vedete nella query ripeto più volte risultati già calcolati (come AVG(...)+AVG(...));

    C'è un modo per salvarli e riutilizzarli? Con le variabili ho avuto problemi, ma forse perché io non sono molto pratico

  8. #8
    puoi postare la query attuale? in più, come da regolamento, indica che tipo di db stai usando

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 © 2020 vBulletin Solutions, Inc. All rights reserved.