Partenopeo.net - Forum Calcio Napoli
Off-topic => Techland => Topic aperto da: peppere - 09 Ottobre, 2013, 20:47:05 pm
-
una domanda agli esperti informatici, lo uso da poco per lavoro e sono in difficoltà
ho un database che pesca da una sorgente esterna e dopo una serie di query mi da una cosa del tipo:
Pippo bello alto biondo
Pippo introverso gay juventino
Ciccio chiatto alto bruno
Ciccio muccus forgioniano rattus
cioè per lo stesso soggetto mi da su una riga caratteristiche fisiche, sulla seconda caratteriali... e così via per migliaia di righe.
Naturalmente è un esempio giusto rendere un'idea.
io vorrei avere le caratteristiche sia fisiche che caratteriali su una stessa riga:
Pippo bello alto biondo introverso gay juventino
Ciccio chiatto alto bruno muccus forgioniano rattus
c'aggia fa? non ho idea
-
posta la query che usi, comunque ti anticipo che ci vuole una join sulla chiave che sarebbe, in tale esempio, la colonna che contiene pippo, franco ciccio ecc.
-
posta la query che usi, comunque ti anticipo che ci vuole una join sulla chiave che sarebbe, in tale esempio, la colonna che contiene pippo, franco ciccio ecc.
non faccio query in sql, non ne sono capace. Faccio query guidate in modalità struttura, ne sono almeno una decina.
Parto da dati che ho a sistema, 2 sorgenti diverse, li porto in locale facendo refresh settimanali (lavorando dal sistema direttamente va lentissimo perchè so milioni di dati) o giornalieri e poi smanetto fino ad arrivare al problema che ti dicevo.
Proprio perchè sono tabelle linkate a dei server non uso chiavi, non me le fa scegliere e quindi sono al problema posto.
al limite potrei pensare di sdoppiare la tabellona in 2 una con le caratteristiche fisiche e una con quelle caratteriali e crearne una terza mettendo in relazione Pippo cu Pippo.
ma mi pare na cacata e non saprei farlo comunque
-
non saprei pè, io queste pazzielle come access non le conosco :look: . ma questi dati che prendi provengono da un db giusto? da due tabelle diverse, una con le caratteristiche fisiche e l'altra caratteriale, piu o meno nella forma
tabella_fisica (nome, capelli, occhi, pesce, ecc. )
tabella_caratt (umore, sesso, forgionaggine, ecc. )
?
-
posta la query che usi, comunque ti anticipo che ci vuole una join sulla chiave che sarebbe, in tale esempio, la colonna che contiene pippo, franco ciccio ecc.
Il mio ragazzo :love:
Peppe anche dalla modalita struttura c'e' un pulsante che ti fa passare alla modalita' sql, trovalo premilo e posta la query
Perche' cosi come hai posto la domanda sembra un banalissimo join ma da quello che hai scritto dopo nun se capisc manc o cazz
-
non saprei pè, io queste pazzielle come access non le conosco :look: . ma questi dati che prendi provengono da un db giusto? da due tabelle diverse, una con le caratteristiche fisiche e l'altra caratteriale, piu o meno nella forma
tabella_fisica (nome, capelli, occhi, pesce, ecc. )
tabella_caratt (umore, sesso, forgionaggine, ecc. )
?
no, ho fatto un esempio di merda :asd:
da un server e quindi da una tabella prendo
sia caratteristiche fisiche che caratteriali che però sono su due record diversi
dall'altro piglio attributi di una caratteristica che joino a Pippo e caratteristica stessa
es
server A
Pippo strunz
B:
Pippo grado di stronzaggine
e viene fuori un record
un altro record è:
Pippo alto (A)
Pippo quant'è alto (B)
e viene fuori un altro record.
io vorrei ottenere
Pippo strunz quant'è strunz alto quant'è alto
tutto sullo stesso record.
mi so spiegato peggio probabilmente :chiagnazzarri:
-
ho il portatile aziendale in azienda :ruoss:
-
no, ho fatto un esempio di merda :asd:
da un server e quindi da una tabella prendo
sia caratteristiche fisiche che caratteriali che però sono su due record diversi
dall'altro piglio attributi di una caratteristica che joino a Pippo e caratteristica stessa
es
server A
Pippo strunz
B:
Pippo grado di stronzaggine
e viene fuori un record
un altro record è:
Pippo alto (A)
Pippo quant'è alto (B)
e viene fuori un altro record.
io vorrei ottenere
Pippo strunz quant'è strunz alto quant'è alto
tutto sullo stesso record.
mi so spiegato peggio probabilmente :chiagnazzarri:
Decisamente :asd:
Dipende tutto se pippo e' pk ( chiave ) e se le due tabelle appartengono allo stesso db, altrimenti nessuno ti garantisce che il pippo alto e' o stess pipp strunz
-
Il mio ragazzo :love:
Peppe anche dalla modalita struttura c'e' un pulsante che ti fa passare alla modalita' sql, trovalo premilo e posta la query
Perche' cosi come hai posto la domanda sembra un banalissimo join ma da quello che hai scritto dopo nun se capisc manc o cazz
maestro :compagni:
ue pè, tu e queste metafore ci stai facendo azzeccare le punte, fai nomi cognomi e numeri se no nun capimm nient :look:
-
maestro :compagni:
ue pè, tu e queste metafore ci stai facendo azzeccare le punte, fai nomi cognomi e numeri se no nun capimm nient :look:
Ma sopratutto una tabella che in uno stesso campo ammesca a seconda ra situazione un valore piuttosto che un altro solo chi si affida a munnezza del livello di access la puo' partorire.
-
allo':
da un server ho:
commessa ciclo lavoro DataSchedulata di A o B
1 A 1 ago
1 B 8 ago
dall'altro ho
commessa ciclo lavoro DataPromessa di A o B
1 A 3 ago
1 B 9 ago
il primo server è in mano ai master scheduler che decidono quando una cosa va fatta (data sched), il secondo è compilato dai planner che dicono effettivamente quando una cosa si fa (data prom) in base a duecentomila variabili.
I cicli A e B avvengono sempre entrambi, uno dopo l'altro
Dopo un po' di query qui e lì, non è così banale come ve la faccio, viene fuori la tabella:
commessa ciclo DataSched Data prom
1 A 1 ago 3 ago
1 B 8 ago 9 ago
questo per migliaia di commesse
io vorrei/devo avere per forza
commessa ciclo DataSched DataProm ciclo DataSched DataProm
1 A 1 ago 3 ago B 8 ago 9 ago
chiaro?
-
Messa così è abbastanza banale come diceva Carmine. Una join e fila liscio perché se riesci ad arrivare a quella tabella puoi sicuramente arrivare al tuo obiettivo facendo una query diversa, appunto una join. Poi bisogna vedere bene che intendi, se stiamo capendo il cazzo per la banca dell'acqua
Inviato dal mio GT-I9100 usando Tapatalk
-
Messa così è abbastanza banale come diceva Carmine. Una join e fila liscio perché se riesci ad arrivare a quella tabella puoi sicuramente arrivare al tuo obiettivo facendo una query diversa, appunto una join. Poi bisogna vedere bene che intendi, se stiamo capendo il cazzo per la banca dell'acqua
Inviato dal mio GT-I9100 usando Tapatalk
mi pare strano perchè i due cicli per la stessa commessa sono su record separati già nella tabella iniziale che prendo dal server
-
Si ma se riesci ad arrivare alla tabella a cui arrivi tu, riesci anche ad avere ciò che ti serve visto che cmq una join la fai per forza di cose mettendo sulla stessa riga caratteristiche della prima E della seconda tabella. Poi ti ripeto bisogna vedere il tutto
Inviato dal mio GT-I9100 usando Tapatalk
-
Si ma se riesci ad arrivare alla tabella a cui arrivi tu, riesci anche ad avere ciò che ti serve visto che cmq una join la fai per forza di cose mettendo sulla stessa riga caratteristiche della prima E della seconda tabella. Poi ti ripeto bisogna vedere il tutto
Inviato dal mio GT-I9100 usando Tapatalk
la join la faccio perchè so dati che vengono da 2 tabelle diverse.
Ma nel caso dei cicli A e B sono su record diversi già in partenza anche se hanno stessa commessa.
commessa ciclo lavoro DataSchedulata di A o B
1 A 1 ago
1 B 8 ago
come faccio qui a metterli su una riga, posso mica joinarli visto che sono su due record della stessa tabella?
-
nel dubbio spostate in uncensored, nun se po mai sapè. Provvederò io a bestemmiare di tanto in tanto per tenerci buono south
-
però se vuoi/devi necessariamente lavorare a partire dal resultSet
commessa ciclo DataSched Data prom
1 A 1 ago 3 ago
1 B 8 ago 9 ago
suona come una cosa che si può risolvere con una self join, praticamente devi fare una query dove joini la tabella con se stessa su "commessa"
però che sistema informatico a zupp e fasul :look:
-
Sì joina con se stessa su commessa e su ciclo diverso da ciclo.
Ma io non capirò mai perchè i crestiani devono uccidersi a fare i salti mortali su access quando ce stann i database tantu bell.
-
la join la faccio perchè so dati che vengono da 2 tabelle diverse.
Ma nel caso dei cicli A e B sono su record diversi già in partenza anche se hanno stessa commessa.
commessa ciclo lavoro DataSchedulata di A o B
1 A 1 ago
1 B 8 ago
come faccio qui a metterli su una riga, posso mica joinarli visto che sono su due record della stessa tabella?
Peppe se, come si evince dalla tabellina che hai postato, per ogni commessa si ha uno o piu' cicli di lavoro allora i dati stanno bene come stanno.
Nel senso che l'entita' commessa e' in relazione (1a n) con l'entita' ciclo di lavoro che ha, per inciso, l'attributo dataschedulata.
Ora volere riportare questa cardinalita' a livello di un solo record e' un fattore fortemente denormalizzante, perche' cosa succede se a un certo punto si introduce un ciclo c ? O anche se il ciclo a e' presente e quello b no ?
Il tuo a questo punto e' un problema di visualizzazione ( che col db non c'entra un cazzo ) perche' suppongo che per comodita' tu preferisci vedere i dati di luongo piuttosto che uno a sott a nato.
Questo in linea tecnica andrebbe fatto con l'ausilio di un linguaggio di programmazione che, a partire da quel resultSet fa' un po' di logica e ti sistema i dati come te piace a te.
In access ad esempio ci sono le macro in visual basic che te lo fanno fare.
Posto che per te potrebbe essere un cacamento di cazzo e che, se ho capito bene, a te non interessa un processo totalmente automatico che risolva il problema ( mi sa che devi fare un report o na cos e chest ) allora, sotto determinate condizioni, ad esempio che per ogni commessa siano sempre presenti i cicli a e b (e non altri) puoi fare una "vista" che puoi ottenere, come ti dicevano i uagliun, facendo il join sulla stessa tabella
Select ... From tua_tabella t1 join tua_tabella t2 on t1.commessa = t2.commessa ....
Se invece la cardinalita' del dato e' sempre fissa ( tutti i record hanno sempre e comunque i cicli a e b ) potresti pensare di acchittare una tabella dove pero' a questo punto il campo ciclo di lavoro e' pleonastico :look: perche' ti bastano le informazioni
Commessa DataschedulataA DataschedulataB
-
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM);
ho fatto quanto vedete sopra e mi viene fuori quello che mi servirebbe tranne che vedo su ogni record due volte lo stesso ciclo.
Mi viene
commessa1 cicloA schedA promA cicloA schedA promA
commessa1 cicloB schedB promB cicloB schedB promB
come faccio a dirgli che su un solo record voglio 2 cicli diversi? :look:
-
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM);
ho fatto quanto vedete sopra e mi viene fuori quello che mi servirebbe tranne che vedo su ogni record due volte lo stesso ciclo.
Mi viene
commessa1 cicloA schedA promA cicloA schedA promA
commessa1 cicloB schedB promB cicloB schedB promB
come faccio a dirgli che su un solo record voglio 2 cicli diversi? :look:
io vedo che tu i campi li prendi tutti dalla tabella Master_02, dovresti prenderli anche dalla Master_02_1 seno' che lo hai fatto a fare tutto il burdello ?
Poi non ho capito perche' continui a postare dei record ca nun c'appizzen manc o cazz con la query che fai :look:, vuoi aggiungere un livello di difficolta' in piu' ? :look:
-
io vedo che tu i campi li prendi tutti dalla tabella Master_02, dovresti prenderli anche dalla Master_02_1 seno' che lo hai fatto a fare tutto il burdello ?
Poi non ho capito perche' continui a postare dei record ca nun c'appizzen manc o cazz con la query che fai :look:, vuoi aggiungere un livello di difficolta' in piu' ? :look:
in più c'è lot e contract date che però non variano mai e quindi non creano problemi.
tornando al punto uno, che c'aggia mettere di master-02-1? e come diversifico i cicli?
-
ho risolto così
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02_1.COD_IMP, Master_02_1.MaxOfSCHED, Master_02_1.MaxOfACTUAL, Master_02_1.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM)
WHERE (((Master_02.COD_IMP)="506") AND ((Master_02_1.COD_IMP)="599"));
mo un'altra cosa :look:
ho un altro ciclo C solo per alcuni che però è intermedio. Praticamente quando C è presente devo duplicare il record della commessa.
Con la query che vi ho scritto sopra, i cicli C che ho in master-02 giustamente li perdo.
:sad:
-
in più c'è lot e contract date che però non variano mai e quindi non creano problemi.
tornando al punto uno, che c'aggia mettere di master-02-1? e come diversifico i cicli?
boh forse sono io che non capisco la domanda, ma che cicli ? sql non cicla.
Sei proprio ingegnere, ti spieghi come un libro stracciato tie'
fatt ruoss
questa e' la tabella
commessa lotto ciclo datafine dataInizio
1 1 A 'oggiA' 'domaniA'
1 1 B 'oggiB' 'domaniB'
questa e' la query:
Select m1.commessa as commessa, m1.ciclo as cicloA, m2.ciclo as cicloB, m1.datainizio as inizioA, m2.datainizio as inizioB from prova.`master` as m1 left join prova.`master` as m2 on m1.commessa=m2.commessa and m1.ciclo<>m2.ciclo group by m1.commessa
questo e' il risultato
commessa cicloA cicloB inizioA inizioB
1 A B oggiA oggiB
Ovviamente e' inutile che ti dica che una query cosi e' il male in ogni luogo e in ogni lago (edit: ho visto la tua e' pure peggio :maronn:)
pero' a te nun te ne fott proprio immagino
-
ho risolto così
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02_1.COD_IMP, Master_02_1.MaxOfSCHED, Master_02_1.MaxOfACTUAL, Master_02_1.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM)
WHERE (((Master_02.COD_IMP)="506") AND ((Master_02_1.COD_IMP)="599"));
mo un'altra cosa :look:
ho un altro ciclo C solo per alcuni che però è intermedio. Praticamente quando C è presente devo duplicare il record della commessa.
Con la query che vi ho scritto sopra, i cicli C che ho in master-02 giustamente li perdo.
:sad:
:maronn:
e' come cercare di spiegare come costruire una casa a uno che se sta facenn na barracc pe venner o per e o muss :look:
-
:maronn:
e' come cercare di spiegare come costruire una casa a uno che se sta facenn na barracc pe venner o per e o muss :look:
:asd:
ho iniziato a usare sto coso 15gg fa, agg' pacienz.
Riguardo alla domanda sul ciclo C, comm mi muovo. Questo per me rappresenta il limone, il finocchio e pure a cascett e Peroni
-
ho risolto così
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02_1.COD_IMP, Master_02_1.MaxOfSCHED, Master_02_1.MaxOfACTUAL, Master_02_1.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM)
WHERE (((Master_02.COD_IMP)="506") AND ((Master_02_1.COD_IMP)="599"));
mo un'altra cosa :look:
ho un altro ciclo C solo per alcuni che però è intermedio. Praticamente quando C è presente devo duplicare il record della commessa.
Con la query che vi ho scritto sopra, i cicli C che ho in master-02 giustamente li perdo.
:sad:
inseriti i cicli C con query di accodamento. :ruoss:
ora ho la tabella fatta bene e popolata con tutte le date per i cicli A e B, mentre per i cicli C ho tutte i record con commessa popolata ma con date vuote.
Per commesse uguali devo popolare i record con ciclo C con le stesse date dei cicli di A e B.
Idee?
-
inseriti i cicli C con query di accodamento. :ruoss:
ora ho la tabella fatta bene e popolata con tutte le date per i cicli A e B, mentre per i cicli C ho tutte i record con commessa popolata ma con date vuote.
Per commesse uguali devo popolare i record con ciclo C con le stesse date dei cicli di A e B.
Idee?
chiamm' a uno che ne capisce e lievet' a nanz :look:
per prendere i dati da una parte e trasferirli automaticamente da un altra parte non hai altra scelta che scrivere uno script pl/sql oppure un applicazione che peraltro ti risolverebbe tutti i problemi del monte a livello si presentazione e business logic può fare tutto quello che la cerevella ti dice
-
Ma viene ancora utilizzato in epoca moderna questo programma? :troll:
-
Ma viene ancora utilizzato in epoca moderna questo programma? :troll:
sì, in qualsiasi azienda del globo terracqueo.
-
ua alemao è diventato pure esperto di informatica mo? :look:
-
ua alemao è diventato pure esperto di informatica mo? :look:
No. Cercavo di battere il record di post di Torello occupando col mio nome tutta la bacheca, ma ho fallito. Ci vuole impegno e dedizione. Per questo lo apprezzo ancor di più. Di Access non me ne fotte niente. :look:
-
progetto quasi finito, condivido con voi l'ottimo lavoro svolto e vi chiedo un'altra cosa :look:
ho una tabella definitiva che è alto livello, racchiude in sè tutte le info utili raccolte nel sistema informatico.
ora creo una tabella di backup manuale, questa tabella viene popolata manualmente quando si hanno info su cambi di date che il sistema catturerebbe con ritardo.
Ho provato a sostituire i campi del sistema con quelli popolati a mano (sono una decina su mille) con una query di aggiornamento ma mi dice:
operation must use an updeatable query.
c'è un modo per modificare i campi presi da sorgenti esterne?
-
Uppo per una domanda fessa.
In una campo calcolato devo inserire tre iif, se campo1 é A, campo 2 è campo3 - 21. Dove campo3 è una data. Se campo1 è B campo2 è campo3 - 3. Se campo1 è C campo2 è uguale a campo3.
Se metto or tra gli iif nel generatore espressioni mi restituisce -1 ovunque in campo2. Se metto , o ; mi da errore. Se invece provo con un solo iif la differenza della data la fa bene.
Dove sbaglio? :boh: