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

    Select count con Left join, come fare?

    Non mi funziona questa query?

    SELECT COUNT(tabella-auto.*) AS NumeroAuto, concessionarie.concessionaria FROM tabella-auto LEFT JOIN tabella-concessionarie ON tabella WHERE FROM #__franchisor LEFT JOIN ON tabella-auto.autoid=tabella-concessionarie.concessionariaid WHERE tabella-concessionarie.pubblicità= 1



    Dov'è che sbaglio?


  2. #2
    Per quale database e' questa query?

    L'uso del trattino nei nomi e' problematico perche' viene interpretato come segno di sottrazione.

    La clausola where deve seguire from e tutte le join.

    Il raggruppamento in presenza di piu' valori nel select deve essere precisato con group by.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    Per quale database e' questa query?

    L'uso del trattino nei nomi e' problematico perche' viene interpretato come segno di sottrazione.

    La clausola where deve seguire from e tutte le join.

    Il raggruppamento in presenza di piu' valori nel select deve essere precisato con group by.

    Utilizzo MySql.

    Il problema è causato dal "count".

    Questa query mi funziona correttamente:

    SELECT tabellaauto.modello, tabellaconcessionari.concessionario FROM tabellaauto LEFT JOIN tabellaconcessionari ON tabellaauto.autoID=tabellaconcessionari.auto ;"));

    Ma se ci aggiungo il "count" mi da errore:

    SELECT COUNT(tabellaauto.*) AS RECORD_COUNT, tabellaauto.modello, tabellaconcessionari.concessionario FROM tabellaauto LEFT JOIN tabellaconcessionari ON tabellaauto.autoID=tabellaconcessionari.auto ;"));

    Errore di sintassi nella query SQL vicino a '*) AS RECORD_COUNT

    Dov'è che sbaglio?




  4. #4
    Questa query e' ben diversa dalla prima.

    Prova senza il nome della tabella.

    SELECT COUNT(*) AS RECORD_COUNT, tabellaauto....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da piero.mac
    Questa query e' ben diversa dalla prima.

    Prova senza il nome della tabella.

    SELECT COUNT(*) AS RECORD_COUNT, tabellaauto....


    Mi da errore anche se utilizzo COUNT(*)!
    Mi dice:

    Il mescolare funzioni di aggregazione (MIN(),MAX(),COUNT()...) e non e` illegale se non c'e` una clausula GROUP BY


    Proprio dipende dal count! Ma dove??




  6. #6
    Se leggi la mia prima risposta vedrai che ho scritto:

    Il raggruppamento in presenza di piu' valori nel select deve essere precisato con group by.

    Quindi devi identificare su quale / quali valori vuoi che sia conteggiato e precisarlo nel GROUP BY.
    codice:
    SELECT COUNT(*) AS RECORD_COUNT, 
    a.modello, 
    c.concessionario 
    FROM tabellaauto as a
    LEFT JOIN tabellaconcessionari as c
    ON a.autoID = c.auto
    GROUP BY a.modello, c.concessionario
    in questo caso ho raggruppato per modello e concessionario, ma tu puoi impostare il group by secondo le tue esigenze.

    Utilizza i campi alias invece di scrivere nomi lunghissimi e poco identificabili a colpo d'occhio. Di solito quando vedo un nome di campo o tabella piu' lungo di 6 caratteri smetto di leggere. Inutile sforzo mnemmonico.

    Dovresti anche usare la cortesia di mettere il codice fra tag [ code] e scriverlo nel modo che vedi in questo esempio. Serve ad invogliare a leggere il post e dare una risposta meno faticosa e piu precisa a chi ti risponde.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da piero.mac
    Se leggi la mia prima risposta vedrai che ho scritto:

    Il raggruppamento in presenza di piu' valori nel select deve essere precisato con group by.

    Quindi devi identificare su quale / quali valori vuoi che sia conteggiato e precisarlo nel GROUP BY.
    codice:
    SELECT COUNT(*) AS RECORD_COUNT, 
    a.modello, 
    c.concessionario 
    FROM tabellaauto as a
    LEFT JOIN tabellaconcessionari as c
    ON a.autoID = c.auto
    GROUP BY a.modello, c.concessionario
    in questo caso ho raggruppato per modello e concessionario, ma tu puoi impostare il group by secondo le tue esigenze.

    Utilizza i campi alias invece di scrivere nomi lunghissimi e poco identificabili a colpo d'occhio. Di solito quando vedo un nome di campo o tabella piu' lungo di 6 caratteri smetto di leggere. Inutile sforzo mnemmonico.

    Dovresti anche usare la cortesia di mettere il codice fra tag [ code] e scriverlo nel modo che vedi in questo esempio. Serve ad invogliare a leggere il post e dare una risposta meno faticosa e piu precisa a chi ti risponde.


    Grazie così funziona!

    Adesso però devo metterci all'interno anche un Where per poter fare visualizzare solo quelle auto che eappartencono a una determinata categoria (sportive, station Wagon,Rally etc)

    Ho diffenti pagine una per ogni categoria di auto.

    SELECT COUNT(tabellaauto.*) AS RECORD_COUNT, tabellaauto.modello, tabellaconcessionari.concessionario FROM tabellaauto LEFT JOIN tabellaconcessionari ON tabellaauto.autoID=tabellaconcessionari.auto WHERE tabellaauto.categoria= ".$_GET['categoria']." GROUP BY tabellaauto.modello ;"));

    Anche stavolta però non mi funziona se ci aggiungo: WHERE tabellaauto.categoria= ".$_GET['categoria']."



    Sapresti dirmi cosa c'è che non va in questa where??


    Grazie ancora.


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.