Visualizzazione risultati 1 fino 3 di 3

Discussione: COUNT in select con molte join restituiscono valori "sbagliati"

  1. #1
    Guest

    Predefinito COUNT in select con molte join restituiscono valori "sbagliati"

    Codice:
    SELECT b.*, LOWER(LEFT(b.band_name, 1)) AS band_letter, fu.fan_id, u.username, u.user_colour, COUNT(a.album_id) AS albums, COUNT(f.fan_band) AS band_fans
    FROM bands b
    LEFT JOIN users u
    	ON (u.user_id = b.band_add)
    LEFT JOIN bands tb
    	ON (b.band_name = b.band_tribute)
    LEFT JOIN bands_albums a
    	ON (a.album_band = b.band_id)
    LEFT JOIN bands_fans f
    	ON (f.fan_band = b.band_id)
    LEFT JOIN bands_fans fu
    	ON (fu.fan_id = 2)
    WHERE b.band_id = 1
    Non capisco perchè i due COUNT non mi restituiscono il valore che vorrei, non capisco come possa risolvere...

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Manca la clausola GROUP BY: devi esplicitare che raggruppi sugli attributi della SELECT (esclusi ovviamente i due conteggi). Trovo strano che MySQL non ti abbia segnalato l'errore, ma abbia ugualmente tentato di elaborare la query...

    Posso darti un suggerimento? Dato che per risolvere questa query devi "incrociare" ben sei tabelle (con conseguente sovraccarico operazionale), hai pensato ad introdurre qualche ridondanza nel tuo database?

    Stammi bene...
    Ultima modifica di dementialsite : 21-12-2009 alle ore 14.12.52
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Cioè?
    Non capisco perchè non funzioni, eliminando il COUNT degli album e la LEFT JOIN della tabell bands_albums tutto funziona a dovere

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •