Pagina 1 di 1

[MySQL]Calcolo inverso.

Inviato: lunedì 28 maggio 2012, 22:10
da gimbo_71
Ciao a tutti.

Il mio solito database di gestione evento mi crea un nuovo grattacapo.

Quando scelgo di attivare una squadra e la associo a un evento vorrei che non fosse più selezionabile. Le squadre le scelgo da una query che tiene conto del tempo di lavoro previsto e che pesca da una normale tabella i dati.

Un esempio: la squadra alfa la associo all'evento 1, all'evento 2 vorrei che non fosse più associabile la stessa squadra.

Sono riuscito, legando la prima query e la tabella eventi, ad avere le squadre attivate ma non riesco ad avere la selezione inversa (quelle attivabili).

Come sempre mi affido a voi.

Grazie e ciao.

Re: [MySQL]Calcolo inverso.

Inviato: mercoledì 30 maggio 2012, 23:38
da Mizio1961
Ciao
Se tutto funziona tramite tabelle dovrebbe bastare una select del tipo:
Seleziona dalla tabella squadre e dalla tabella eventi tutte le squadre che non sono associate a un evento, cioè una sintassi SQL sulla base di
SELECT SQUADRA.SQUADRE FROM SQUADRE, EVENTI WHERE SQUADRA.SQUADRA <> SQUADRA.EVENTI
Non so se l'SQL è completa ma la strada dovrebbe essere giusta
Spero possa esserti d'aiuto
Saluti by Mizio ;)

Re: [MySQL]Calcolo inverso.

Inviato: giovedì 31 maggio 2012, 10:11
da gimbo_71
Ciao.

Ho provato a collegare le 2 query che mi dovrebbero dare il risultato cercato ma non ho ottenuto quello che volevo. In pratica il controllo <> mi restituisce tutti i casi nei quali i 2 campi sono diversi, perciò con questo metodo ho molti risultati multipli e mi mancano solo quelli uguali (vedi esempio, In realtà Costa14 e tfcosta12 son collegate ad un evento)

L'idea che mi era venuta era quella di invertire le selezioni ottenute con = ma visto così non funziona.

Se hai idee per favore cerca di spiegarle come ad un neofita, io sono a quel livello.

Ciao.

Re: [MySQL]Calcolo inverso.

Inviato: giovedì 31 maggio 2012, 12:03
da Mizio1961
Ciao
Hai modo di mandarmi il database su cui stai operando così ci provo un paio di mie macro e vedo se riesco ad aiutarti?
Saluti

Re: [MySQL]Calcolo inverso.

Inviato: giovedì 31 maggio 2012, 18:03
da gimbo_71
Il database si appoggia a mysql, se te lo invio riesci ad aprirlo?

Perdona l'ignoranza ma non so se basta fare copia-incolla.

Re: [MySQL]Calcolo inverso.

Inviato: giovedì 31 maggio 2012, 22:30
da vladko
crea un nuovo db vuoto con base
affianca al tuo
trascina le tabelle dal tuo mysql al nuovo (da qualche parte nel forum avevo messo anche con immagini ma non ricordo dove)
lo stesso per formulari
togli se ci sono dati che non vuoi pubblicare
salva
invia qui

(il tuo db è lo stesso di questa domanda?)
http://user.services.openoffice.org/it/ ... =13&t=2918

Re: [MySQL]Calcolo inverso.

Inviato: venerdì 1 giugno 2012, 17:36
da gimbo_71
Si, il database è lo stesso, con qualche modifica perché ogni tanto ho il tempo di lavorarci.

Non riesco a caricarlo, mi dice che la dimensione massima è 128kb, il database anche pulito da quello che non serve è 242kb.
Te lo invio vie email?

Re: [MySQL]Calcolo inverso.

Inviato: lunedì 4 giugno 2012, 10:25
da vladko
prova compattare

http://user.services.openoffice.org/it/ ... act#p12236
se non basta invia a mail. mi pare aveva chiesto anche Mizio

Re: [MySQL]Calcolo inverso.

Inviato: lunedì 4 giugno 2012, 11:46
da Mizio1961
Ciao
Puoi usare la casella di posta di google che puoi aprire coi seguenti riferimenti:
Nome utente: oodocs.tutorial@gmail.com
Password: oodocs2012tut
(Meti il file nella zona documenti della casella mail)
Saluti by Mizio

Re: [MySQL]Calcolo inverso.

Inviato: lunedì 4 giugno 2012, 16:37
da gimbo_71
Messo su google document.
Grazie e ciao.

Re: [MySQL]Calcolo inverso.

Inviato: mercoledì 6 giugno 2012, 9:29
da Mizio1961
Ciao
Ho dato un'occhiata e capito il problema, penso.
La selezione della squadra dovrebbe tener conto dei periodi in cui ogni squadra è stata già assegnata, facendo vedere solo quelle libere...
Uhm, mumble mumble... niente male come problema, almeno per me..
Sto pensandoci...
In teoria dovresti eseguire una query in cui ci sia un confronto fra i valori di data inizio e data fine evento immessi nel formulario per registrare un nuovo evento e tutti i valori di data inizio e data fine degli eventi già registrati. Quindi creare una procedura che faccia quanto segue:
- Leggi i valori di data inizio e data fine impostati per il nuovo evento da registrare
- esegui un controllo di congurenza per cui data inizio evento è minore o uguale a data fine evento
- esegui la selezione delle squadre dalla tabella squadre e dalla tabella eventi per cui sia vero il filtro che esclude le squadre a cui sia stato già assegnato un evento che inizia prima della fine e finisce dopo l'inizio degli eventi già pianificati e alimenta il combo di selezione squadra
Per ora dal dire al fare c'è ancora di mezzo il mare, però se qualcuno ha facilità di tradurre in pratica ben venga
Intanto vedi anche se questa strada è quella giusta e più semplice o se quello che ti ho detto accende qualche altra lampadina che per ora a me è rimasta spenta
Ciao

Re: [MySQL]Calcolo inverso.

Inviato: mercoledì 6 giugno 2012, 16:24
da gimbo_71
Ecco, il problema sta nel filtro che esclude le squadre già attivate.

Poi per gli eventi in corso e le squadre che sono presenti non è difficile, bastano due query che tengano conto dei tempi per le squadre (già fatto) e se è stato chiuso per gli eventi (fatto come report di stampa, non inviato per non caricare troppa roba).

Re: [MySQL]Calcolo inverso.

Inviato: giovedì 7 giugno 2012, 9:37
da vladko
mio pensiero è:
solo due tabelle

eventi
id
nome
inizio (timestamp)
fine (timestamp)
id_squadra

squadre
id
squadra
tel etc



inserire almeno un evento per ogni squadra

la Vista di filtro squadre

Codice: Seleziona tutto

SELECT "squadre"."squadra", "eventi"."id_squadra" FROM "protcivile_costa"."eventi" AS "eventi", "protcivile_costa"."squadre" AS "squadre" WHERE "eventi"."id_squadre" = "squadre"."id" AND "eventi"."fine" < NOW( )
importante è usare campi timestamp

per il formulario

una parte dedicata a inserimento che contiene la casella di repilogo filtrata
una parte a dati
un pulsante aggiornamento(o macro) squadre disponibili che può essere anche una tabella laterale per una vista immediata

questa naturalmente è la base, da qui si può fare molto altro