PDA

View Full Version : [mysql] inserire dati provenienti da altra tabella


RaouL_BennetH
05-09-2005, 17:22
:what:

allora,io ho questa select:


"SELECT codice,giorno, MIN(orario) AS Ingresso, MAX(orario) AS Uscita,
TIMEDIFF(MAX(orario), MIN(orario)) " +
" AS ore FROM rilievi" +
" WHERE codice = '" + textBox1.Text + "' " +
" GROUP BY codice"


E la tabella dalla quale faccio questa select è così composta:


codice
giorno
orario


Facendo questa select ottengo quindi questi dati es.:


codice | giorno | Ingresso | Uscita | ore
--------+-------------+----------+----------+----------
0010 | 30/08/2005 | 12:35:29 | 21:47:56 | 09:12:27


Ora, questi dati vorrei riuscire a memorizzarli in un'altra tabella composta da:


codice
giorno
Ingresso
Uscita
Totale


Come posso fare?

BlueDragon
05-09-2005, 20:30
Documentazione MySQL:
Capitolo: 13.2.4.1. INSERT ... SELECT Syntax

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Quindi dovresti fare...

"INSERT
INTO AltraTabella (codice,giorno,Ingresso,Uscita,Totale)
SELECT codice,giorno, MIN(orario) AS Ingresso, MAX(orario) AS Uscita,
TIMEDIFF(MAX(orario), MIN(orario)) " +
" AS ore FROM rilievi" +
" WHERE codice = '" + textBox1.Text + "' " +
" GROUP BY codice"

:)

RaouL_BennetH
06-09-2005, 13:16
Si :)

E' da ieri che sto su quel capitolo,ma la sql così come già provata non mi funziona :(

Allora mi sono detto,ora mi sgancio dal programma e la faccio direttamente da mysql,ovviamente variando la clausola WHERE.

Il messaggio di errore che ottengo però resta lo stesso. :help:

BlueDragon
07-09-2005, 00:28
Si :)

E' da ieri che sto su quel capitolo,ma la sql così come già provata non mi funziona :(

Allora mi sono detto,ora mi sgancio dal programma e la faccio direttamente da mysql,ovviamente variando la clausola WHERE.

Il messaggio di errore che ottengo però resta lo stesso. :help:
Quale messaggio di errore?

A proposito, mi sa che c'è un errore nella query così come l'hai scritta qui...
..fai un GROUP BY codice e poi selezioni giorno che non è né parte del group by né un risultato di formule di aggregazione (min, max...).
Dovresti fare "GROUP BY codice, giorno" per avere anche giorno come ritorno...(oppure lo dovresti mettere in una formula di aggregazione).