Visualizzazione risultati 1 fino 6 di 6

Discussione: Join tra tabelle e conteggio commenti

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito Join tra tabelle e conteggio commenti

    Buongiorno,
    ho di una mano riguardo una join query tra 3 tabelle (utenti, zone, commenti).

    La query attuale è:

    Codice PHP:
    SELECT utenti.*, zone.nome_zona FROM utenti INNER JOIN zone ON zone.nome_zona = utenti.id WHERE abilitato = '1' ORDER BY vincitore DESC
    In pratica questa query mostra in ordine alfabetico gli utenti abilitati e le rispettive zone ma come primo risultato assoluto il vincitore.

    Il secondo classificato viene scelto in base al numero di commenti posseduti quindi ciò che io vorrei è mostrare dopo il vincitore gli utenti ordinati in base al numero di loro voti.

    Mi aiutate?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    mostra in ordine alfabetico
    Ma "vincitore" è il nome del vincitore o un booleano che indica se si è il vincitore o meno?
    Nel primo caso, come fa a mostrare come primo il vincitore? Nel secondo, come fa a mostrare in ordine alfabetico?

    Comunque, hai provato una cosa del tipo: ORDER BY vincitore, num_commenti ?

    (dove num_commenti lo ricavi con COUNT(*) contando i commenti di ogni persona)

    Ciao!

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    "vincitore" è un valore booleano e funziona correttamente.

    La query che ho scritto sopra è come se prendesse due tabelle e le facesse diventare una sola (JOIN) ... adesso volevo aggiungere un ulteriore colonna a questa mega query nella quale c'era il numero di commenti che ha quel determinato ID utente... solo che provo e riprovo ma non riesco a fare... l'unica soluzione veloce sarebbe usare due cicli uno dentro l'altro ma non mi piace tanto come idea e vorrei usarla come ultima spiaggia...
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    Prova qualcosa del genere

    Codice PHP:
    SELECT
    utenti
    .*,
    zone.nome_zona,
    COUNT(commenti.id_commento)
    FROM utenti
    INNER JOIN zone ON zone
    .nome_zona = utenti.id
    LEFT JOIN commenti ON commenti
    .id_utente = utenti.id
    WHERE abilitato
    = '1'
    GROUP BY utenti.id
    ORDER BY vincitore DESC

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Comunque, hai provato una cosa del tipo: ORDER BY vincitore, num_commenti ?
    Dalla query di vplaza:

    Codice:
    SELECT  
      utenti.*,  
      zone.nome_zona, 
      COUNT(commenti.id_commento) AS num_commenti
    FROM utenti  
    INNER JOIN zone ON zone.nome_zona = utenti.id  
    LEFT JOIN commenti ON commenti.id_utente = utenti.id 
    WHERE abilitato = '1'  
    GROUP BY utenti.id 
    ORDER BY vincitore DESC, num_commenti DESC
    Ciao!

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ottimo la query funziona perfettamente. Grazie ad entrambi
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

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