[MySQL]Calcolo inverso.

Discussioni sulle caratteristiche di database
Rispondi
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

[MySQL]Calcolo inverso.

Messaggio 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.
LibreOffice 3.6.2.2 su Ubuntu 12.10
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: [MySQL]Calcolo inverso.

Messaggio 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 ;)
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: [MySQL]Calcolo inverso.

Messaggio 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.
Allegati
Schermata.png
LibreOffice 3.6.2.2 su Ubuntu 12.10
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: [MySQL]Calcolo inverso.

Messaggio 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
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: [MySQL]Calcolo inverso.

Messaggio 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.
LibreOffice 3.6.2.2 su Ubuntu 12.10
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: [MySQL]Calcolo inverso.

Messaggio 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
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: [MySQL]Calcolo inverso.

Messaggio 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?
LibreOffice 3.6.2.2 su Ubuntu 12.10
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: [MySQL]Calcolo inverso.

Messaggio da vladko »

prova compattare

http://user.services.openoffice.org/it/ ... act#p12236
se non basta invia a mail. mi pare aveva chiesto anche Mizio
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: [MySQL]Calcolo inverso.

Messaggio 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
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: [MySQL]Calcolo inverso.

Messaggio da gimbo_71 »

Messo su google document.
Grazie e ciao.
LibreOffice 3.6.2.2 su Ubuntu 12.10
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: [MySQL]Calcolo inverso.

Messaggio 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
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
gimbo_71
Messaggi: 74
Iscritto il: lunedì 18 ottobre 2010, 18:09

Re: [MySQL]Calcolo inverso.

Messaggio 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).
LibreOffice 3.6.2.2 su Ubuntu 12.10
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: [MySQL]Calcolo inverso.

Messaggio 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
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Rispondi