Unire dati da due tabelle

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Salve, ho un nuovo problema.
Ho queste tabelle:
-users(userid,...)
-puntate(userid,eventid,quota,vinta,...)
-events(eventid,sport,...)
In questo modo per ogni utente calcolo il suo punteggio (numero_vittorie * media_quota * (numero_vittorie / puntate_totali))
PHP:
SELECT userdat.userid, ((SELECT COUNT(*) AS vinte FROM puntate WHERE puntate.userid = userdat.userid AND vinta='si')*(SELECT AVG(quota) AS media FROM puntate WHERE puntate.userid = userdat.userid AND vinta='si')*(SELECT COUNT(*) AS vinte FROM puntate WHERE puntate.userid = userdat.userid AND vinta='si') / (SELECT COUNT(*) AS numero FROM puntate WHERE puntate.userid = userdat.userid)) AS punteggio FROM puntate LEFT JOIN userdat ON userdat.userid = puntate.userid GROUP BY userdat.userid ORDER BY punteggio DESC
Con questa query ottengo giustamente come risultato ogni utente associato al suo punteggio. Mi piacerebbe modificare questa query in modo da aggiungere un filtro per eseguire lo stesso calcolo soltanto per un determinato sport (le puntate sono riferite ad un evento con determinato eventid, e ogni evento ha uno sport associato)
Ad esempio:
PHP:
switch($sport){
case 'football' :
$where = "/* cosa devo scrivere qui? */";
break;
case 'tennis' :
$where = "/* cosa devo scrivere qui? */";
break;
...
}
Quindi come faccio a scegliere le puntate di un evento di un determinato sport?
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Grazie mille per la risposta, ma il mio problema non riguarda UNION, credo che dovrei usare LEFT JOIN o WHERE per collegare i dati ma non so come usarli.
Grazie comunque per la risposta
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Momentaneamente, per comodità, anche se non sarebbe proprio corretto, ho aggiunto direttamente un campo "sport" anche nella tabella puntate, e vi inserisco lo sport in fase di inserimento senza complicarmi troppo la vita in fase di selezione e mettendo quindi un semplice where. Ovviamente, anche se ho già raggiunto il mio scopo, se qualcuno riuscisse comunque ad aiutarmi mi farebbe un grande favore.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
questa query dovrebbe essere equivalente alla tua,
ho controllato e non ci sono errori ortografici, ma dimmi se funziona,
SQL:
SELECT t.userid, u.nome, sum(t.vinte) * sum(t.vinte) * sum(t.media) / sum(t.numero) AS punteggio FROM (
  SELECT userid, COUNT(*) AS vinte, AVG(quota) AS media, 0        AS numero FROM puntate WHERE vinta='si' GROUP BY userid
  UNION ALL
  SELECT userid, 0        AS vinte, 0          AS media, COUNT(*) AS numero FROM puntate                  GROUP BY userid
) t
LEFT JOIN users u ON t.userid = u.userid
GROUP BY t.userid, u.nome
ORDER BY punteggio DESC, u.nome

se per caso la precedente funzionasse, magari può andare anche questa
SQL:
SELECT t.userid, u.nome, t.sport, sum(t.vinte) * sum(t.vinte) * sum(t.media) / sum(t.numero) AS punteggio FROM (

  SELECT userid, sport, COUNT(*) AS vinte, AVG(quota) AS media, 0        AS numero
  FROM puntate p
  LEFT JOIN sport s ON p.eventid = s.eventid AND sport = 'xyz'
  WHERE vinta='si'
  GROUP BY userid, sport

  UNION ALL

  SELECT userid, sport, 0        AS vinte, 0          AS media, COUNT(*) AS numero
  FROM puntate p
  LEFT JOIN sport s ON p.eventid = s.eventid AND sport = 'xyz'
  GROUP BY userid, sport

) t
LEFT JOIN users u ON t.userid = u.userid
GROUP BY t.userid, u.nome, t.sport
ORDER BY punteggio DESC, u.nome

mi riprometto di verificare se esiste di meglio,
per gestire 2 livelli di "group by" nella stessa query,
in una forma portabile su sistemi diversi
 
Ultima modifica:

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Marino51 sei favoloso, non so come ringraziarti. Funzionano entrambe perfettamente, sento che grazie ai tuoi consigli mi viene sempre più facile capire cose che fino a poco tempo fa mi sembravano impossibili!
Grazie mille
 
Discussioni simili
Autore Titolo Forum Risposte Data
I unire piu tabelle con gli stessi dati PHP 1
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
X unire più file in un pdf Windows e Software 2
rebeca Come Unire file PST in Uno? Windows e Software 0
K Unire più tabelle in una singola tabella PHP 3
F [PHP] Cercare voci uguali nel db e unire alcune variabili PHP 0
D [PHP] Unire 2 Array con ID in comune PHP 0
R unire 2 reti in una Adsl e Connettività 0
P Unire record Database 0
trattorino [PHP] unire due variabili PHP 0
trattorino [PHP] Unire a una query piu tabelle PHP 7
D unire due tabelle MySQL 1
S Unire due foreach simili PHP 5
D Unire campi PHP 2
P Unire il tasto submit anzicchè averlo in due file PHP 2
G Unire risultato di una select PHP 2
M Unire due modalità di pagina responsive in una... Javascript 0
P Unire due funzioni... Javascript 1
felino [RISOLTO] [MySQL] Unire due tabelle esistenti in una nuova MySQL 1
M Unire piu funzioni di una classe PHP 12
Monital Unire deglia rray bidiemnsionali PHP 7
criric Unire due array - array_merge() PHP 2
P Unire celle e righe in tabella HTML e CSS 0
G unire union e join insieme MySQL 7
P Unire, confrontare due tabelle da due db diversi fati in phpmyadmin Database 5
max_400 Unire 2 query - calcoli matematici: somma, moltiplicazione, percentuale PHP 7
I consiglio su come unire 2 codici? HTML e CSS 1
M Eliminare backup automatico e unire partizioni Hardware 0
R creazione carrello - unire sito al database PHP 14
T unire più campi e formare un link Database 0
L unire due pagine PHP 0
Z Unire i risultati di due Query PHP 3
X unire pagine php PHP 2
M X POLE e per chi si vuole unire Discussioni Varie 17
Cassandra Si possono unire più linguaggi? HTML e CSS 3
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 8
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0

Discussioni simili