Unione query di 4 tabelle

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Salve, avrei un problema che per me è davvero troppo complicato.
Ho queste 6 tabelle:
-user(userid,...)
-eventi(eventid,...)
-puntate(eventid,userid,coin,orario,vinta...)
-schedine(id_schedina,costo,inizio,conclusa...)
-schedine_giocate(id_schedina,userid,when,...)
-sfide(id_sfida,sfidato,sfidante,puntata,inizio,stato,...)
(Tutti questi campi sono INT, tranne "vinta","conclusa" e "stato")
Funziona così:
1.un utente con userid x quando gioca su un evento con eventid y si inserisce una riga nella tabella puntate con eventid=y,userid=x,coin è il numero di monete virtuali che ha deciso di puntare,orario è il timestamp di quando ha puntato, vinta è "forse" se la partita non è ancora conclusa, "si" se ha indovinato il risultato, "no" se l'ha sbagliato.
2.inserisco con un form delle righe nella tabella schedine (si crea un id_schedina, costo e inizio li scelgo io, conclusa può essere "si" o "no" a seconda che sia finita o meno.
3.un utente decide di puntare una schedina, spendendo il "costo" preso dalla tabella schedine. La sua giocata si inserisce in schedine_giocate(id_schedina è quello della schedina giocata, userid è il suo userid e when è il timestamp di quando ha giocato).
4.un utente può decidere di sfidare un proprio amico. In questo caso si inserisce in "sfide": id_sfida è l'ID della sfida, sfidante è il userid dell'utente che ha inviato la proposta di sfida, sfidato è l'userid dell'utente che ha ricevuto la proposta di sfida, puntata è l'importo di monete virtuali da puntare(scelto dallo sfidante), inizio è il timestamp dell'orario di inizio degli eventi associati alla sfida, stato può essere "richiesta" se la proposta non è ancora stata accettata, "rifiutata", "incorso", se è stata accettata, "conclusa", se tutti gli eventi sono già finiti.

Detto questo, spero che la panoramica sia chiara. Quello che vorrei fare è:
In una pagina sono riuscito a calcolare la somma totale dei coins in gioco di un determinato utente(somma da puntate, schedine_giocate e sfide). Ora mi piacerebbe visualizzare un box per ogni "elemento" in gioco di quel determinato. Un esempio:
Box 1 (puntata): orario - Hai puntato <coin> monete sull'evento <eventid>
Box 2 (schedine_giocate): when - Hai puntato <schedina.costo> monete sulla schedina <id_schedina>
Box 3 (sfida): inizio - Hai <puntata> coins in gioco in una sfida contro <sfidato o sfidante a seconda di chi ha creato la sfida>
...
Ovviamente per creare i box mi arrangio, mi serve un aiuto per recuperare i dati dal database
Spero di essermi spiegato, credo che bisogni utilizzare le UNION per fare ciò ma non sono pratico, qualcuno può aiutarmi?
 
Ultima modifica:

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Con enorme soddisfazione posso dire di esserci riuscito!! Sono davvero stupito di me stesso perchè fino a ieri le mie conoscenze di SQL si fermavano ai WHERE... e non avevo mai preparato query più "complesse"
Se a qualcuno servisse per uno spunto pubblico la query funzionante:
PHP:
SELECT events.eventid,events.sport,events.description,puntate.coin,events.inizio,CONCAT('evento') AS tipo FROM events LEFT JOIN puntate ON puntate.eventid=events.eventid WHERE puntate.userid='$usid' AND events.finito='no' UNION SELECT schedine.id_schedina AS eventid,sport AS sport,titolo AS description,costo AS coin,inizio AS inizio,CONCAT('schedina') AS tipo FROM schedine LEFT JOIN schedine_giocate ON schedine_giocate.id_schedina=schedine.id_schedina WHERE schedine_giocate.userid='$usid' AND schedine.conclusa='no' UNION SELECT id_sfida AS eventid,sfidato AS sport,sfidante AS description,puntata AS coin,inizio AS inizio,CONCAT('sfida') AS tipo FROM sfide WHERE (sfidante='$usid' OR sfidato='$usid') AND stato='conclusa'
ORDER BY inizio DESC
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Problemi con query unione PHP 11
F aiuto per query UNIONE mysql MySQL 2
gaia creare una tabella dall'unione di due tabelle MySQL 3
Z [MS WORD + MS ACCESS] Stampa Unione, Next e record vuoto Windows e Software 0
I unione di due file photoshop Photoshop 1
G Unione di due immagini (con una delle due ruotata) PHP 1
I Alternativa a Stampa Unione di Word? Windows e Software 0
A PHP, word e stampa unione! PHP 3
O C++ Array di struct e blocco struct unione C/C++ 0
K unione tabelle Database 2
max75 query su due tabelle e dati doppioni MS Access 2
E Aiuto per query PHP 8
E Query differenza tra tabelle MySQL 5
E Query Alias PHP 4
T Query con date MS Access 1
K Inserimento query Errore 1366 PHP 4
L Query e selezione DB con $_POST PHP 2
M query update e delete PHP 0
A media degli elementi estratti da una query MySQL 0
S Passare query o utm alla pagina successiva Domini 1
O problema con query PHP 4
M Query PHP 8
R query DELETE non cancella i record PHP 1
G Query con i giorni della settimana MySQL 10
E Query annidate o cicli MySQL 1
C bottone query MySQL 0
T Query su due tabelle con totali Database 4
G AVVISO QUERY IN ESECUZIONE PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
S Selezionare ultimo record di una sotto query MySQL 27
G Menù a tendina di ricerca con query PHP 1
V Query per una somma PHP 2
F stampare a video i risultati della query PHP 1
L problema con query select PHP 2
D Query sum Database 1
M Visualizzazione a video risultati query php PHP 0
A form PHP prenotazione tramite query PHP 2
R Problema query con ricerca id numerico PHP 2
G Casella combinata in una query MS Access 4
R Aiuto con le query MS Access 2
Y query di DELETE PHP 4
V Query Oracle Oracle 0
L query somma PHP 8
W Query SQL Classic ASP 2
M Problemi con query a più tabelle PHP 3
Alex_70 Conteggio nella query PHP 0
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
A nome file che contiene punto passato come parametro a query PHP 31
F query e form con select multipla PHP 17
M Problema su query JOIN in tre tabelle PHP 0

Discussioni simili