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

    [MySQL] LEFT JOIN e COUNT() = 0

    Salve a tutti

    In un mio script ho la seguente query:

    codice:
    SELECT programmes.*, COUNT(DISTINCT(items.series)) AS series, COUNT(items.id) AS items_count
    FROM programmes LEFT JOIN items
    ON (programmes.id = items.programme_id)
    WHERE programmes.trashed = 0
    AND items.trashed = 0
    GROUP BY programmes.id
    ORDER BY programmes.name_it ASC
    Mi sono appena reso conto che questa query, nonostante il LEFT JOIN, non restituisce i valori della tabella "programmes" se "items.count" = 0.

    Facendo qualche ricerca, ho trovato questa soluzione:

    codice:
    SELECT programmes.*, COUNT(DISTINCT(items.series)) AS series, COUNT(items.id) AS items_count
    FROM programmes LEFT JOIN items
    ON (programmes.id = items.programme_id AND programmes.trashed = 0 AND items.trashed = 0)
    GROUP BY programmes.id
    ORDER BY programmes.name_it ASC
    In pratica, include gli statement del WHERE direttamente nelle condizioni del JOIN. A prima vista sembra funzionare perfettamente, ma dal momento che non ho mai visto nč usato un construtto del genere vorrei sapere se effettivamente č valido e privo di effetti collaterali.


    Grazie a tutti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    magari se indichi anche COSA vorresti...

  3. #3
    vuole sapere se il secondo coNstrutto č "effettivamente č valido e privo di effetti collaterali"

  4. #4
    Ciao a tutti

    @franzauker

    Beh, ovviamente voglio estrarre i campi specificati, ma come in un normale LEFT JOIN vorrei che anche i record di "programmes" che non hanno corrispondenti in "items" venissero mostrati, cosa che con la prima query non avveniva e con la seconda avviene.


    @optime

    Non ho capito se la tua risposta era ironica, ma č esattamente quello che stavo domandando

    Come dicevo, non ho mai visto nč utilizzato quella sintassi, e volevo sapere se qualcun altro la conosce e se effettivamente č uguale a quella della prima query, con il vantaggio di includere i record in cui i COUNT sono uguali a zero.

    Scusate l'errore grammaticale, abito in Inghilterra e ogni tanto mi confondo tra la sintassi inglese e quella italiana (construct != costrutto)


    Grazie a tutti!

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