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

    select da una tabella con l'aggiunta di COUNT

    Ah che titolo
    Beh ciao a tutti, verrò subito al dunque: ho due tabelle "tradizionali":

    codice:
    tabella: autore
    [id_autore] [nome] [età]
    
    tabella: libro
    [id_libro] [titolo] [data] [id_autore]
    e mi piacerebbe fare una select su autore in modo da ottenere i valori dell'autore e in aggiunta
    il numero dei libri che ha scritto.
    Al momento eseguo due query: select su autore e poi COUNT su libro, where libro.id_autore = autore.id_autore ma sono conscio del fatto che sia un ottimo spreco di risorse. Quindi mi chiedo, esiste la possibilità di innestare le due query in una sola? :master:
    Vi ringrazio per qualsiasi spunto e spero di non avere annoiato troppo.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    select autore.id_autore, nome, età, count(*) from autore left join libro using id_autore where autore.id_autore = x group by autore.id_autore

    non è sql standard ma con mysql dovrebbe andare

  3. #3
    ciao luca200 grazie per l'interessamento (volendo fa anche rima )
    Purtroppo con quello che suggerisci parte un errore di sintassi:

    codice:
    SELECT autore.id_autore, nome, età, 
    COUNT( * ) FROM autore LEFT JOIN libro 
    USING ID_autore WHERE autore.ID_autore = '4' 
    GROUP BY autore.ID_autore LIMIT 0 , 30
    in particolare:

    codice:
    [...] near 'ID_autore WHERE autore.ID_autore = '4' GROUP BY autore' at line 1


  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    USING (ID_Autore)

    ho dimenticato le parentesi

  5. #5
    Infatti ora funziona alla perfezione!
    Una sola curiosità: come mai questo non è SQL standard?
    Intanto ti ringrazio, sei stato gentilissimo.

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non è standard perché ci sono due campi (nome ed età) che non sono raggruppati, il che non sarebbe consentito in presenza di funzioni di colonna come count(*)
    Tuttavia in questo caso il loro valore è per forza di cose sempre lo stesso, per cui la deviazione dallo standard di Mysql non genera risultati random

  7. #7
    Originariamente inviato da luca200
    Non è standard perché ci sono due campi (nome ed età) che non sono raggruppati, il che non sarebbe consentito in presenza di funzioni di colonna come count(*)
    Tuttavia in questo caso il loro valore è per forza di cose sempre lo stesso, per cui la deviazione dallo standard di Mysql non genera risultati random
    e se cambia database?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Santino83_02
    e se cambia database?
    indovina

  9. #9
    Originariamente inviato da luca200
    indovina
    rifà la query perchè non è standard....
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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