Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82

    SQL - query con diverse condizioni

    Ciao ragazzi.

    Io ho questa query:

    codice:
    medSql = "SELECT ASS_PROD.ID_PRODUTTORE,ANAG_PROD_FIS.COGNOME,ANAG_PROD_FIS.NOME,ANAG_PROD_GIU.RAG_SOC "
    medSql = medSql & "FROM ASS_PROD,ANAG_PROD_FIS,ANAG_PROD_GIU "
    medSql = medSql & "WHERE ASS_PROD.COD_AG_O_FIN= '" & cod_anag & "' " 
    medSql = medSql & "AND ASS_PROD.COD_FIGURA = 'B' AND ASS_PROD.ID_ANAG= '" & id_anag & "'"
    medSql = medSql & " AND ANAG_PROD_FIS.ID_PRODUTTORE = ASS_PROD.ID_PRODUTTORE"
    medSql = medSql & " OR ANAG_PROD_GIU.ID_PRODUTTORE = ASS_PROD.ID_PRODUTTORE"
    Dopo il where le prime 3 condizioni si devono verificare sempre mentre le ultime due si verifica l'una o l'altra.

    Così come l'ho scritta io mi restituisce una miriade di risultati ripetuti.

    Com'è la sintassi corretta?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    medSql = medSql & "WHERE ASS_PROD.COD_AG_O_FIN= '" & cod_anag & "' " 
    medSql = medSql & "AND ASS_PROD.COD_FIGURA = 'B' AND ASS_PROD.ID_ANAG= '" & id_anag & "'"
    medSql = medSql & " AND (ANAG_PROD_FIS.ID_PRODUTTORE = ASS_PROD.ID_PRODUTTORE"
    medSql = medSql & " OR ANAG_PROD_GIU.ID_PRODUTTORE = ASS_PROD.ID_PRODUTTORE)"
    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    si ma forse l'ho impostata male io perchè mi restituisce risultati ripetuti

    Io ho questa situazione:

    TABELLA ASS_PROD

    ID_ASS_PROD (IN JOIN CON LE TABELLE ANAG_PROD_FIS E ANAG_PROD_GIU)
    ID_PRODUTTORE
    COD_AG_O_FIN
    COD_FIGURA
    ID_ANAG

    TABELLA ANAG_PROD_FIS

    ID_PRODUTTORE
    NOME
    COGNOME

    TABELLA ANAG_PROD_GIU

    ID_PRODUTTORE
    RAG_SOC


    io dovrei prendere l'ID PRODUTTORE verificando le prime 3 condizioni e poi con questo vado a prende nome e cognome da la tab ANAG_PROD_FIS se ID PRODUTTORE relativo è in join con ANAG_PROD_FIS o
    rag_soc dalla tab ANAG_PROD_GIU se è in join con ANAG_PROD_FIS.

    Poi devo riempire una select con i risultati ottenuti

    Mi potreste aiutare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    nessuno ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    In poche parole devo estrarre questi ID_PRODUTTORI al verificarsi delle prime tre condizioni e poi, successivamente, con questi ID_PRODUTTORI andare ad estrarre nelle altre tabelle gli altri campi.

    Io chiedo se si devono fare due query o si può fare tutto in una?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    potrebbe essere che trovi corrispondenza 1 a molti ie ad un rec. di
    TABELLA ASS_PROD corrispondono + rec delle altre?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    no la tabella ASS_PROD ha questo ID_PRODUTTORE che è in join con le altre tabelle.

    esempio

    codice:
    TAB  ASS_PROD
    
    ID_ASS_PROD     ID_PRODUTTORI    COD_FIGURA   COD_AG_O_FIN    ID_ANAG
         
         1                1               B            FS            1
         2                2               B            FS            1
         3                3               B            A             2
    
    ---------------------------------------------------------------------
    
    TAB  ANAG_PROD_GIU
    
    ID_PRODUTTORI             RAG_SOC
    
         1                 PINCOPALLONE SRL
    
    ---------------------------------------------------------------------
    
    TAB  ANAG_PROD_GIU
    
    ID_PRODUTTORI             NOME                COGNOME
    
         2                    LUCA                 VERDI
         3                    MARIO                ROSSI
    
    ---------------------------------------------------------------------
    Se faccio una query dove COD_FIGURA = B, COD_AG_O_FIN = FS e ID_ANAG =1, ottengo gli ID_PRODUTTORI 1 E 2.

    Poi mi vado a prendere l'ID_PRODUTTORI 1 dalla tabella ANAG_PROD_GIU (estraendo il campo RAG_SOC) e il 2 dalla tabella ANAG_PROD_FIS (estraendo i campi NOME e COGNOME)

    Lo si può fare in unica query o bisognare fare due o più steps?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    Non posso crederci che nessuno abbia una risposta.

    Vi prego,pieta per un povero neofita

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    usa le left join o qualcosa di simile per il tuo db
    SELECT ???
    FROM (a LEFT JOIN b ON a.id = b.id) LEFT JOIN c ON a.id = c.id WHERE
    .......

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 © 2025 vBulletin Solutions, Inc. All rights reserved.