Newsgroup: it.comp.lang.vo-clipper
Titolo: [mySql] Help me!

Ciao a tutti,
mi sono un po' rinco......., sarà l'età??
Il mio problema:
ho due tabelle in mySql, una stanze ed una prenotazioni.
Ho bisogno di creare un resultset che mi dica quali stanze sono disponibili
in una certa data in virtù delle prenotazioni esistenti.
Io tento di filtrare tramite query le stanze unendo la tabella prenotazioni
con la data che mi interessa, ma non va.
Se provo:
SELECT * from stanze, prenotaz
where prenotaz.arrivo != '20040701'
ossia dammi tutte le stanze dove il campo data arrivo è diverso dal 1-7-04,
non mi da nessun record, se invece anzichè il segno di diverso uso quello di
uguale mi da tutte le stanze.
Ho provato anche con le join ma non cambia niente.
Voi come fareste?
Grazie a tutti x l'aiuto.

 where prenotaz.arrivo != '20040701'
Se arrivo è un campo data non penso tu possa confrontarlo con una
stringa, o sbaglio?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 ha scritto nel messaggio
news:c78dca$8gt$1...@grillo.cs.interbusiness.it...

Prova con :SELECT * from stanze left join prenotaz on stanze.numero =
prenotaz.numero
 where stanze.arrivo <> '2004-07-01'
Danilo Giuliani
www.softdevo.com
in...@softdevo.com
sup...@softdevo.com

 Danilo Giuliani
la tabella stanze è l'archivio delle stanze disponibili e quindi non ha un
campo arrivo. Il campo arrivo è nella tabella prenotazioni ma se scrivo:
SELECT * from stanze left join pren_app on stanze.cod_sta = pren_app.cod_sta
where pren_app.arrivo = '2004-07-01'
mi da le stanze prenotate, mentre se uso <> invece di darmi le stanze non
prenotate non mi da nessun record!!
Boh........


Si, in mySql si puň.

 Si, in mySql si puň.
Perň non mi sembra una grande cosa. Cosě facendo entra di mezzo la
problematica della localizzazione. In soldoni, puň darsi che tu debba
scrivere la data nella stringa in un certo formato piuttosto che in un
altro.


 EMG
con VO invio la data come stringa usando DtoS() e va tutto bene.
Francesco Leo

 ha scritto nel messaggio
news:c7aakj$2ck$1...@carabinieri.cs.interbusiness.it...

Quale è il valore di default di arrivo? se non ne ha (potrebbe essere
0000-00-00 ) allore devi testare il valore NULL ovvero
SELECT * from stanze left join pren_app on stanze.cod_sta = pren_app.cod_sta
 where pren_app.arrivo <> '2004-07-01' .or.  pren_app.arrivo = NULL
Danilo

 EMG
Anche nei DBF il campo data è una string in formato dtos, è poi fieldget e
fieldput che si preoccupano di tutto, ovvero nessuna differenza.
 pren_app.arrivo = Danilo Giuliani
www.softdevo.com
in...@softdevo.com
sup...@softdevo.com

 con VO invio la data come stringa usando DtoS() e va tutto bene.
Ah, ottimo e comodo! Anche se l'esempio di Danilo mi pareva diverso.
Comunque, allora perché non ti funziona la query? Mah...



io sono nuovo del "mestiere" č da poco che provo ad utilizzare MySQL ma
forse se provi questa ...
SELECT stanze.*
FROM stanze left join prenotaz on prenotaz.numero = stanze.numero
WHERE isnull(prenotaz.numero) and stanze.arrivo <> '2004-07-01'
facci sapere ... :-)
Claudio Carletta

 fieldput che si preoccupano di tutto, ovvero nessuna differenza.
Scherzi? Come accedi alla rappresentazione interna di un campo data? Non
puoi scavalcare FIELDGET() e compagnia, almeno non al livello del
linguaggio Clipper. Forse in C, non so. Quindi in Clipper *non puoi*
confrontare un campo data con una stringa, a meno di non convertire uno
dei due nel tipo dell'altro. Che in MySQL si potesse fare direttamente
non lo sapevo e, come ho già detto, lo trovo molto comodo. Ma non mi
pare sia portabile, giusto?



Scusami Danilo, non avevo visto la tua risposta, per rispondere a
Infoservice ho dovuto pensarci un po di tempo, e quando o postato tu avevi
già dato la tua ottima risposta.
Claudio

Grazie a tutti x l'aiuto, in particolare a te Danilo,
ho risolto utilizzando ISNULL() combinato con BETWEEN() che controlla il
range delle date.
Buon lavoro a tutti.