Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    sql access due query in una!!!!!!!!!!!!!!!!!!!!

    ciao...vorrei sapere se era possibile fare due operazioni su una sola stringa query in sql ambientato access.
    Es-devo fare una operazione su due date di due tabelle differenti che hanno la stessa chiave(numero).se la data1 è maggiore della data2 allora stampo alcuni dati...altrimenti ne stampo altri.

    In pratica dovrei fare due query su una unica query....qualcuno mi può aiutare????

  2. #2
    su sql si usa LEFT JOIN e RIGHT JOIN. Su Access non saprei...

  3. #3
    HO GIà PROVATO.NON FUNZIONA NULLA.IO DOVREI FARE DUE OPERAZIONI.HAI PRESENTE IN LINGUAGGIO C CHE POSSO UTLIZZARE LA IF.ECCO...IN SQL ESISTE UNA COSA SIMILE?SE UNA QUERY NON SODDISFA LA CONDIZIONE PASSA ALLA SECONDA QUERY

  4. #4
    se la prima query è formulata in modo che restituisca solo ed univocamente i valori che ti interessano, si può fare un if dove domandi se la query ha prodotto o meno un risultato.
    Insomma fai la prima, se nessun elemento soddisfa la condizione restituisce una variabile vuota. A questo punto fai un if con argomento
    codice:
    ($dati!="")
    se soddisfa la condizione lanci la seconda query.

  5. #5
    Ti spiego:
    ho due tabelle con i seguenti campi:
    -tab1:num,data1,nome,cognome
    -tab2:num,data2,provincia,città
    premetto:il campo num non funge da chiave primaria

    ogni tabella ha più num uguali:es
    nella tab1 abbiamo per es:
    -l'articolo 1500(num) ha + movimentazioni il 15/10/2004,il 16/10/2004..ecc..
    -l'articolo 1600(num)ha + movimentazioni: 20/05/2005,il
    21/05/2005..ecc

    nella tab2 troviamo:
    --l'articolo 1500(lo stesso num di tab1) ha + movimentazioni il 07/07/2004,il 15/09/2004..ecc..
    e lo stesso l'articolo 1600...ecc..

    io devo confrontare i due campi:
    l'articolo 1500 di tab1 con l'articolo 1500 di tab2.
    Devo trovare la data+recente di ogni tabella:
    in questo casoer l'articolo 1500 di tab1 la data+recente è:16/10/2004
    nella tab2 per l'articolo 1500 la data+recente è:15/09/2004.
    ok---ora devo confrontare i due numeri(1500)delle due tabelle e devo travare il max data____deve venire fuori alla fine di tutto che per l'articolo 1500 la data maggiore è 16/10/2004.(confronto max data tab1 e max data di tab2)

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Non sei stato chiarissimo, fammi capire meglio, dato un intero vuoi il max tra data1 e data2?

    La cosa migliore è farlo a livello appicazione, cmq al volo puoi fare questa query, che però funziona solo se access supporta UNION e query nidificate


    codice:
    SELECT max(data) FROM
         (SELECT max(data1) AS data FROM tabella1 WHERE num=1500 UNION 
          SELECT max(data2) AS data FROM tabella2 WHERE num=1500) AS temptable
    Come vedi la query è abbastanza complicata, per questo è meglio farlo a livello applicazione, inoltre questo codice funziona su PostrgreSQL, perchè supporta UNION e query multiple, mentre su access non ne ho idea.

  7. #7
    IO HO DUE TABELLE CHE CONTENGONO LO STESO NUMERO DI ARTICOLO.OGNI ARTICOLO HA PER TABELLA +MOVIMENTAZIONI
    IO DEVO TROVARE PER UN ARTICOLO(ES ART 1500) LA MOVIMENTAZIONE +RECENTE.
    nella tabella1 ho per es sette movimentazione per quell'articolo
    nella tabella2 ho cinque movimentazioni per lo stesso articolo.
    Io devo trovare la movimentazione +recente non per ogni tabella ma su tutte e due contemporaneamente per lo stesso articolo.

    Es:art nr.1500(equivalente su tutte e due le tabelle
    tab1 ha i seg campi:num art,nome,cognome,età
    tab2 ha i seg campi:num art,città,provincia,paese
    le movimentazioni sono
    tab1 tab2
    15/10/2004 11/10/2004
    16/10/2004 12/10/2004
    17/10/2004 19/10/2004
    20/10/2004 25/10/2004
    come vedi la data + recente di tutte(sia tab1 che tab2 è 25/10/2004).
    siccome la data + recente si trova nella tab2 allora devo stampare quella data e i campi che appartengono alla tab2(num art,città,provincia,paese)e non quelli di tab1.

  8. #8
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Allora, la query che ti ho indicato, sempre ammesso che funzioni su access, trova la massima data tra tutti i record delle due tabelle con num=1500, per fare quello che dici tu devi aggiungere un'altra query, nel tuo caso diventa

    codice:
    SELECT * FROM tabella1 FULL JOIN tabella2 
       ON (data1 = data2 AND tabella1.num = tabella2.num) 
       WHERE num=1500 AND data1 =
    (SELECT max(data) FROM
         (SELECT max(data1) AS data FROM tabella1 WHERE num=1500 UNION 
          SELECT max(data2) AS data FROM tabella2 WHERE num=1500) AS temptable)
    ti sembra una cosa fattibile, perchè ti ostini a voler fare tutto con una sola query, non puoi farlo a livello applicazione????

  9. #9
    e come si fa alivello applicazione?

  10. #10
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Che vuol dire come si fa???

    Scusa ma tu i dati dove li stai usando? in un programma php o in che altro?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.