Autore Topic: [RISOLTO] Update from Select  (Letto 1922 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
[RISOLTO] Update from Select
« il: 26 Febbraio 2010, 22:21:41 »
Sono da alcuni giorni che mi leggo tonnellate di documentazione su Mysql e l'Sql ma non riesco proprio ad uscirne, come scritto in oggetto ho la necessità di aggiornare una tabella prelevando i dati da una seconda tabella in base a dei criteri.
Il tutto fà parte di un programma che stò sviluppando in Gambas, per escludere che il problema dipendesse da qualche istruzione errata ho provato la query direttamente sul DB ma niente da fare mi da errore di sintassi.
Vi posto la query (che non funziona...purtroppo  :'() per spiegarmi meglio:

Codice: [Seleziona]
UPDATE tabella1 SET (campo1, campo2, campo3, campo4) =
(SELECT campoA, campoB, campoC, campoD FROM tabella2 WHERE campoX BETWEEN 1 AND 10)
WHERE tabella1.campoZ = 'pippo'

Spero tanto che sia una mio errore.

« Ultima modifica: 01 Marzo 2010, 20:47:40 da tornu »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Update from Select
« Risposta #1 il: 26 Febbraio 2010, 23:00:49 »
la query è per mysql o per sqlite?

mai usato query come quella sotto ma sul mio pc con gambas mysql richiede questo apice:  ` e non questo:'

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Update from Select
« Risposta #2 il: 26 Febbraio 2010, 23:03:49 »
tanto di cappello a te che cerchi di fare tutto ciò con una query unica , io avrei scritto un po + di codice e copiato i dati direttamente con più query semplici

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Update from Select
« Risposta #3 il: 26 Febbraio 2010, 23:51:51 »
E' per Mysql.
Il simbolo penso sia lo stesso che usi tu, quello che sulla tastiera si trova insieme al ?
Cerco di sfruttare al massimo le potenzialità dell' Sql.
Nel caso specifico quando nel programma che stò sviluppando si verifica una certa condizione devo eseguire la query che ho postato.
Se hai suggerimenti per ottenere lo stesso risultato sfruttando il codice di Gambas non farti pregare, suggerisci pure, io in questo momento sono in fissa (più che altro confuso... >:( a forza di fare prove) a risolvere la query.


Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Update from Select
« Risposta #4 il: 27 Febbraio 2010, 08:17:01 »
l' apice corretto  lo scrivi con Altgr + ?

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Update from Select
« Risposta #5 il: 01 Marzo 2010, 00:16:52 »
l' apice corretto  lo scrivi con Altgr + ?

Ok.

Sto seguendo il tuo consiglio per quanto riguarda scrivere qualche riga di codice in più, in quanto mi sono accordo che la query unica che stavo cercando di eseguire non andava bene.

Ora però ho un'altro problema con il codice che sostituirà la query:
Codice: [Seleziona]
  DIM xSQL AS String
  DIM c AS Integer
  DIM xResult, zResult AS Result

' Selezione dati
  xSQL &= " SELECT dato1, dato2, dato3"
  xSQL &= " FROM tabella1"
  xSQL &= " WHERE datox BETWEEN '1' AND '10'"
  xResult = MGlobal.db.Exec(xSQL)

  c = xResult.Index

' Inserisce i dati selezionati
    FOR c = 0 TO xResult.Count - 1
      zResult = MGlobal.db.Create("tabella2")
      zResult["campoA"] = TextBox.Text
      zResult["campoB"] = xResult!dato1
      zResult["campoC"] = xResult!dato2
      zResult["campoD"] = xResult!dato3
      zResult.Update
    NEXT
    MGlobal.db.Commit
    MGlobal.db.Close
Questo codice nel programma reale dovrebbe inserire tre record, invece inserisce il primo ripetuto 3 volte.
Perchè, cosa sbaglio?
« Ultima modifica: 01 Marzo 2010, 00:57:52 da tornu »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Update from Select
« Risposta #6 il: 01 Marzo 2010, 00:23:44 »
io farei una query di ricerca su tutti i campi poi prelevi quelli che ti servono dal codice il mio motto è" Keep easy "

ricordati che se conosci il nome del campo puoi scrivere zResult!nomecampo , l' altra notazione mi pare si riferisca all' indice di campo

xsql = "SELECT * FROM tabella1 WHERE databox BEETWEEN 1 AND 10;"


Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Update from Select
« Risposta #7 il: 01 Marzo 2010, 00:55:36 »
io farei una query di ricerca su tutti i campi poi prelevi quelli che ti servono dal codice il mio motto è" Keep easy "

ricordati che se conosci il nome del campo puoi scrivere zResult!nomecampo , l' altra notazione mi pare si riferisca all' indice di campo

xsql = "SELECT * FROM tabella1 WHERE databox BEETWEEN 1 AND 10;"


??? Scusa, ma non ho capito la tua risposta.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Update from Select
« Risposta #8 il: 01 Marzo 2010, 11:05:17 »
Io di solito apro 2 connessioni, una per i dati in lettura ed una per i dati in scrittura.
Prova a separare le cose, non usando cioè la stessa connessione per entrambe le operazioni.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Update from Select
« Risposta #9 il: 01 Marzo 2010, 18:20:18 »
Codice: [Seleziona]
    FOR c = 0 TO xResult.Count - 1
      xResult.MoveTo(c)
      zResult = MGlobal.db.Create("tabella2")
      zResult["campoA"] = TextBox.Text
      zResult["campoB"] = xResult!dato1
      zResult["campoC"] = xResult!dato2
      zResult["campoD"] = xResult!dato3
      zResult.Update
    NEXT

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Update from Select
« Risposta #10 il: 01 Marzo 2010, 20:46:52 »
Siiiiiiii  :D :D :D Funziona!!!!!!
Grazie a tutti per i suggerimenti, naturalmente a milio uno in più per la soluzione.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: [RISOLTO] Update from Select
« Risposta #11 il: 01 Marzo 2010, 21:13:23 »
 :P :P :P

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [RISOLTO] Update from Select
« Risposta #12 il: 02 Marzo 2010, 00:29:32 »
:P :P :P

Ma di la verità....ti occupi solo di database tu?? :D

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: [RISOLTO] Update from Select
« Risposta #13 il: 02 Marzo 2010, 10:36:09 »
Diciamo che con il lavoro che sto facendo adesso ne ho visti tanti di database :)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [RISOLTO] Update from Select
« Risposta #14 il: 02 Marzo 2010, 13:44:27 »
Diciamo che con il lavoro che sto facendo adesso ne ho visti tanti di database :)
:o....sporcaccione... :P