[PHP] Inner join su 4 tabelle

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao a tutti, ho bisogno del vostro aiuto per risolvere un problema.

Ho 4 tabelle cosi costituite:
anagrafica -> id - nome
pagamenti-> id - id_prenotazione - data - importo
prenotazioni-> id - id_stanza - id_cliente - datain - dataout - costo
stanze-> id - nome

Ora io dovrei realizzare una tabella che tramite una query mi restituisca per ogni prenotazione i seguenti valori:
anagrafica.nome - stanze.nome - prenotazioni.datain - prenotazioni.dataout - prenotazioni.costo - pagamenti.importo

Vi ringrazio anticipatamente a tutti
 
Ciao e grazie per la risposta.
Sicuramente mi sono espresso male.
Con tabella intendevo quello che realizzo poi tramite HTML e dove metto tutti i risultati.
Io devo ottenere a video l'elenco ti tutte le prenotazioni con i relativi campi indicati nel precedente post.
Si deve essere vista come un'unica tabella che racchiude tutti i campi delle 4 tabelle.
poi a video dovrò visualizzare tutto e questo dovrà essere ordinabile o anagrafica.nome -o stanze.nome o prenotazioni.dataout o prenotazioni.costo.
Spero di aver spiegato bene il problema e chiedo scusa se ho fatto confusione
 
Ultima modifica:
deve essere vista come un'unica tabella
capisco che vuoi ottenere il risultato con un'unica query,
vedi se è ciò che ti serve,
Codice:
select
  anagrafica.nome as nomecliente
 ,stanze.nome as nomestanza
 ,prenotazioni.datain
 ,prenotazioni.dataout
 ,prenotazioni.costo
 ,pagamenti.importo
from prenotazioni
left join anagrafica on prenotazioni.id_cliente = anagrafica.id
left join stanze on prenotazioni.id_stanza = stanze.id
left join pagamenti on prenotazioni.id = pagamenti.id_prenotazione
credo che dovrai inserire una o più clausole "where" per limitare la selezione delle prenotazioni estratte
usando "left join" vengono estratte tutte le prenotazioni, anche quelle che non hanno pagamenti in essere ( dovrebbe essere interessante elencarle)
 
  • Like
Reactions: solari77
Si è perfettamente quello che cercavo.
Va benissimo cosi la query perchè devo visualizzare anche le prenotazioni che non hanno pagamenti.
Sei stato gentilissimo
 
scusami ancora, ho appena notato una cosa.
Chiaramente non potevi saperlo perchè non l'ho specificato.
Il pagamento può avvenire in 2 tranche, in questo modo la view mi restituisce 2 righe (una per ogni pagamento).
E' possibile raggruppare i pagamenti (e quindi la relativa riga) relativi alla stessa prenotazione ?
 
Chiaramente non potevi saperlo perchè non l'ho specificato.
Il pagamento può avvenire in 2 tranche, in questo modo la view mi restituisce 2 righe (una per ogni pagamento).
In realtà volevo scriverlo come nota .. ma ho lasciato perdere
prova così,
Codice:
select
  anagrafica.nome as nomecliente
 ,stanze.nome as nomestanza
 ,prenotazioni.datain
 ,prenotazioni.dataout
 ,prenotazioni.costo
 ,sum(pagamenti.importo) as importo
from prenotazioni
left join anagrafica on prenotazioni.id_cliente = anagrafica.id
left join stanze on prenotazioni.id_stanza = stanze.id
left join pagamenti on prenotazioni.id = pagamenti.id_prenotazione
group by
  anagrafica.nome
 ,stanze.nome
 ,prenotazioni.datain
 ,prenotazioni.dataout
 ,prenotazioni.costo
 
  • Like
Reactions: solari77

Discussioni simili