creare tabella con dati da database

  • Creatore Discussione Creatore Discussione ludrico
  • Data di inizio Data di inizio

ludrico

Nuovo Utente
12 Gen 2012
7
0
0
allora il mio problema è trasferire i dati contenuti in una tabella nel mio database in una tabella del mio sito



la mia tabella nel database è :

utente| debitore | contante in debito | contante
marco | giulia | 700€ | 1000€
giulia | luigi | 600€ | 1000€
Francesca | giulia | 50€ | 1000€
luigi | X | X | 1000€




la tabella che vorrei visualizzare nella mia pagina è invece :

nome | contante in debito | contante|
marco | 0€ | 1000€
giulia | 750€ | 1000€
francesca | 0€ 1000€
luigi | 600€ | 1000€


avevo pensato a qualcosa del genere:

SELECT debitore, sum(contante in debito) FROM utenti GROUP BY debitore

ma questo codice riporta dal database solo le righe dove il campo "debitore" non è vuoto!

esiste un qualche altro tipo di comando che tenga in considerazione tutte le righe della mia tabella utenti ?

Magari facendo uscire "0" nella colonna della mia tabella "contante in debito" quando l'utente non è debitore di nessuno?


attendo vostre notizie e grazie per la vostra disponibilità
 
ciao prova questa
Codice:
SELECT * FROM (
SELECT debitore as nome, sum(contanteindebito) as debito,contante
FROM `utenti` WHERE contanteindebito > 0 GROUP BY debitore

UNION ALL

SELECT utente as nome, 0 as debito,contante
FROM utenti GROUP BY utente
) as tbl GROUP BY tbl.nome
 
ciao prova questa
Codice:
SELECT * FROM (
SELECT debitore as nome, sum(contanteindebito) as debito,contante
FROM `utenti` WHERE contanteindebito > 0 GROUP BY debitore

UNION ALL

SELECT utente as nome, 0 as debito,contante
FROM utenti GROUP BY utente
) as tbl GROUP BY tbl.nome

il codice funziona ma in parte... ti faccio un esempio della tabella che viene visualizzata così facciamo prima


questa è la mia tabella "utenti" del mio database:

utente________________ debitore______________debito_________ contante
marco_________________ giulia ______________ 700€___________________ 1500€
giulia _________________ luigi _________________ 600€ ___________________ 1200€
Francesca ______________ giulia _______________ 50€ ____________________ 1300€
luigi ________________ campo vuoto ___________campo vuoto _______________ 1400€

questa è la tabella che vorrei visualizzare :

nome utente________________contante__________ contante in debito
marco _____________________ 1500€ _________________ 0€
luigi ______________________ 1400€ _________________ 600€
francesca___________________1300€_________________ 0€
giulia __________ _______ ____1200€_________________ 750€

questa è la tabella che visualizzo utilizzando il codice che mi hai consigliato

nome utente________________contante__________ contante in debito
marco _____________________ 1500€ _________________ 0€
luigi ______________________ 1200€ _________________ 600€
francesca___________________1300€_________________ 0€
giulia __________ _______ ____1500€_________________ 750€

come puoi vedere giulia ha un debito con marco e con francesca, nella colonna "contante" invece di essere visualizzato il valore 1200€ (dato che si trova nella tabella utenti del database alla riga di giulia) viene visualizzato il "contante" del creditore piu ricco, in questo caso marco (in quanto 1500€>1300€).
La stessa cosa avviene con luigi invece di riportare dal database il valore corretto 1400€ (dato che si trova nella tabella utenti del database alla riga di luigi)riporta il contante del suo creditore piu ricco, in questo caso il contante di giulia 1200€.

come posso correggere il codice da te postatomi?
 
Si, hai ragione, non ci avevo fatto caso

prova cosi

Codice:
SELECT * FROM (
SELECT debitore as nome, sum(contanteindebito) as debito,contante
FROM `utenti` WHERE contanteindebito > 0 GROUP BY debitore
UNION ALL

SELECT utente as nome, 0 as debito,contante
FROM utenti GROUP BY utente ORDER BY debito
) as tbl GROUP BY tbl.nome

in effetti è una query fuori dal mio ordinario, non ne sono ancora convinto

ho aggiunto un ordinamento nella tabella generata dalla union
testala con tutti gli elementi che hai a disposizione
 
Codice:
SELECT * FROM (
SELECT debitore as nome, sum(contanteindebito) as debito,contante
FROM `utenti` WHERE contanteindebito > 0 GROUP BY debitore
UNION ALL

SELECT utente as nome, 0 as debito,contante
FROM utenti GROUP BY utente order by debito
) as tbl GROUP BY tbl.nome ORDER BY contante desc

mi ero permesso di aggiungere anche order by contante desc per ottenere che i risultati fossero visualizzati secondo il credito decrescente ma il codice continua a non funzionare, quell'anomalia che ti avevo descritto prima non si presenta più, ma ora la colonna dei "contante in debito" riporta zero in tutte le celle
 
E' stato un parto

prova questa

Codice:
SELECT U.utente,U.contante, IFNULL(UD.debito,0) as debito
FROM utenti U 
LEFT JOIN (
SELECT utente,debitore, SUM(contanteindebito) as debito FROM utenti GROUP BY debitore
) UD ON U.utente = UD.debitore
 
ora funziona alla grande :D grazie

un ultima cosa puoi per caso indicarmi dove posso trovare qualche guida, magari con qualche esempio, che mi "istruisca" sul funzionamento di questi codici ?

grazie ancora e a presto :jolly:
 
Ci sono tante guide in rete, anche su questo sito

Cerca Guida MySQL
 

Discussioni simili