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

    Query un pò difficile per me

    Salve a tutti,
    ho queste tabelle e questa necessità di query:

    tabella1: dati dell'utente
    tabella2: categorie di appartenenza (dentro la tabella1 c'è scritto l'id della categoria di appartenenza)
    tabella3: tante righe quanti sono i voti ricevuti da quell'utente. (qui c'è l'id utente memorizzato per sapere quale ha ricevuto il voto)

    Vorrei poter estrarre gli utenti di quella determinata categoria ordinandoli per i voti ricevuti.

    Dimenticavo: vorrei che fossero visualizzati anche gli utenti che non hanno ricevuto voti ma che fanno parte di quella categoria

    Grazie

  2. #2

    Re: Query un pò difficile per me

    Originariamente inviato da Jimmy Gomma
    Salve a tutti,
    ho queste tabelle e questa necessità di query:

    tabella1: dati dell'utente
    tabella2: categorie di appartenenza (dentro la tabella1 c'è scritto l'id della categoria di appartenenza)
    tabella3: tante righe quanti sono i voti ricevuti da quell'utente. (qui c'è l'id utente memorizzato per sapere quale ha ricevuto il voto)

    Vorrei poter estrarre gli utenti di quella determinata categoria ordinandoli per i voti ricevuti.

    Dimenticavo: vorrei che fossero visualizzati anche gli utenti che non hanno ricevuto voti ma che fanno parte di quella categoria

    Grazie
    SELECT nome_utente , voto FROM table1,table2,table3 order by voto
    www.gicchesto.com
    Servizi informatici ed elettronici a 360° per aziende e/o privati.

  3. #3

    Re: Re: Query un pò difficile per me

    Originariamente inviato da maurorhcp89
    SELECT nome_utente , voto FROM table1,table2,table3 order by voto
    Eh, non è così semplice come sembra purtroppo. Grazie comunque della risposta

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Re: Query un pò difficile per me

    Originariamente inviato da Jimmy Gomma
    Salve a tutti,
    ho queste tabelle e questa necessità di query:

    tabella1: dati dell'utente
    tabella2: categorie di appartenenza (dentro la tabella1 c'è scritto l'id della categoria di appartenenza)
    tabella3: tante righe quanti sono i voti ricevuti da quell'utente. (qui c'è l'id utente memorizzato per sapere quale ha ricevuto il voto)

    Vorrei poter estrarre gli utenti di quella determinata categoria ordinandoli per i voti ricevuti.

    Dimenticavo: vorrei che fossero visualizzati anche gli utenti che non hanno ricevuto voti ma che fanno parte di quella categoria

    Grazie
    Nella tabella 3 c'e' (spero) anche l'id della categoria, vero?

    Potresti indicare i campi piu' significativi delle 3 tabelle, in modo da poterti costruire la select piu' chiaramente?

    @maurorhcp89: La tua select produce un prodotto cartesiano, se non metti le condizioni, ovvero le chiavi, corrette tra le tabelle.

    ps. io cambierei il titolo del 3D. E' troppo generico

  5. #5

    Re: Re: Query un pò difficile per me

    Originariamente inviato da mosquito70
    Nella tabella 3 c'e' (spero) anche l'id della categoria, vero?

    Potresti indicare i campi piu' significativi delle 3 tabelle, in modo da poterti costruire la select piu' chiaramente?

    @maurorhcp89: La tua select produce un prodotto cartesiano, se non metti le condizioni, ovvero le chiavi, corrette tra le tabelle.

    ps. io cambierei il titolo del 3D. E' troppo generico

    Allora forse ci sono riuscito:

    SELECT users.*, users.id, (SELECT COUNT(feedback.voto) from $db_offerte.feedback where feedback.idaz=users.id) as totale from $db_offerte.users, $db_offerte.categorie where users.tipo='1' AND users.attivo='1' AND categorie.nome='$key' AND categorie.id=users.idcat AND users.categoria='categorie' AND users.idsito='$idsito' order by totale $tipord limit $limita,10


    Questa sembra funzionare ma vorrei "modificarla" con i vari JOIN. Puoi darmi una mano?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Scusa, ma non e' chiaro.
    Ho ricostruito, dalla tua select i campi che compongono le tue tabelle
    (Se li scrivi te pero' e' meglio
    Ma c'e' qualcosa che non mi torna, nella struttura del db

    Utenti
    ID --> Identificativo univoco dell'utente
    Tipo --> Immagino la tipologia dell'utente (non e' importante)
    Attivo --> anche questo poco importante per questa select
    idsito
    idcat
    categorie --> ????

    Perche' Categorie e' sulla tabella utenti? A che serve visto che

    Categoria
    ID --> identificativo univoco della categoria
    nome --> descrizione

    Infine

    Feedback
    idaz --> Identificativo univoco del voto???

    Perche' lo poni in relazione con l'Id dell'utente e non con un apposito id da inserire sulla tabella utenti???

    Se mi confermi questo, la struttura del db non e' corretta.

    Pero' prima di procedere a modificarla, mi dovresti pero' spiegarmi alcune cose.

    1) 1 utente puo' appartenere a 1 sola categoria e quindi il
    rapporto tabella Utenti - Categorie e' 1-1?

    2) 1 utente puo' avere per una determinata categoria piu' voti?
    E da cosa si differenziano i voti?

    Intanto cominciamo cosi'.
    Ti dico subito che in Utenti, metterei solo l'id della categoria e non occorre ripetere la descrizione (se categorie e' la descrizione).

    Inoltre, la nomenclatura dovrebbe essere piu' standard, altrimenti non ci si capisce niente.

    ID --> per l'identificativo univoco di una tabella (sempre presente)
    DESC_NomeCampo --> per la descrizione

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Chi ti ha risposto finora ha le idee molto più confuse di te, non farci caso.

    La tua query in teoria è semplicissima:

    SELECT u.*, count(*) as numerovoti from utenti u left join voti v on u.utente_id = v.utente_id where u.categoria = x group by u.utente_id

    Non è sql standard ma con mysql non dà problemi.
    Come vedi nella query non compare la tabella categorie, perché non ti serve, a meno che tu non voglia estrarre anche il nome della categoria o qualche altro dato che la descrive, e non ce l'abbia già da qualche altra parte. In questo caso diventerebbe così

    SELECT u.*, c.*, count(*)as numerovoti from utenti u left join categorie c on u.categoria = c.categoria left join voti v on u.utente_id = v.utente_id where u.categoria = x group by u.utente_id

    Ovviamente i nomi delle tabelle e dei campi li ho inventati

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da luca200
    Chi ti ha risposto finora ha le idee molto più confuse di te, non farci caso.
    ...


    Ognuno hai i suoi modi sia per scrivere commenti in un forum (tecnico), sia, sopratutto, per disegnare una base dati (anche fosse formata da 3 tabelle).
    In entrambi i casi, la decenza sarebbe augurabile.

    Ma vedo che non e' il tuo caso.

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.