Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    Problema query con JOIN

    Ciao a tutti,
    sono di nuovo costretto a postare qui per avere ulteriore aiuto su una query SQL.

    La query attuale è questa:

    SELECT strutture.struttura, strutture.IDstruttura FROM strutture LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstrutt ura where rifstruttura.IDtrattamento = '"&Cint(IDtratt)&"' OR rifstruttureesterne.IDtrattamento = '"&Cint(IDtratt)&"'

    La query funziona ma dovrei aggiungergli un pezzo, ovvero dovrei escludere dalla query gli IDstruttura che si trovano nella tabella rifsede.

    In pratica nella tabella rifsede ho un campo IDstruttura e IDstrumenti; IDstruttura ha lo stesso ID presente in strutture prelevato dalla query sopra riportata e IDstrumenti viene passato dal sistema. Come faccio?

    Ho provato ad aggiungergli il tutto nella condizione WHERE ma naturalmente non essendo stata inserita nella query, la tabella rifsede risulta sconosciuta.

    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    devi mettere la tabella nel FROM
    FROM rifsede, strutture JOIN....
    non te la seleziona ma te la riconosce nella query
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  3. #3
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Grazie, ho provato e così non mi da errore. Mi restituisce una query un po strana e non è corretta ma devo controllare la correttezza della select. Se non trovo l'inghippo continuerò la discussione qui.
    www.beppegrillo.it
    Il blog di Beppe!!

  4. #4
    ok
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  5. #5
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Non riesco a fare la select giusta.

    SELECT strutture.struttura, strutture.IDstruttura FROM strutture INNER JOIN rifsede on (rifsede.IDstruttura = strutture.IDstruttura) LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura AND rifstruttura.IDstruttura<>rifsede.IDstruttura LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstrutt ura AND rifstruttureesterne.IDstrutture<>rifsede.IDstruttu ra where (rifstruttura.IDtrattamento = 91 OR rifstruttureesterne.IDtrattamento = 91) AND rifsede.IDstrumenti=55


    Ho provato in questo modo ma mi estrae i dati sbagliati

    Come posso fare per estrarre i dati presenti in rifstrutture e rifstruttureesterne che non abbiano IDstruttura uguale all'IDstruttura presente in rifsede?
    www.beppegrillo.it
    Il blog di Beppe!!

  6. #6
    come query è abbastanza complessa :master:
    quello che potresti fare è mettere le condizioni di diseguaglianza nella where anziche nella join

    p.s.: ti riposto la query in un modo piu comprensibile
    codice:
    SELECT 
    	strutture.struttura, 
    	strutture.IDstruttura 
    FROM 
    	strutture 
    	INNER JOIN rifsede on (rifsede.IDstruttura = strutture.IDstruttura) 
    	LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura AND rifstruttura.IDstruttura<>rifsede.IDstruttura 
    	LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstruttura AND rifstruttureesterne.IDstrutture<>rifsede.IDstruttura where 
    	(rifstruttura.IDtrattamento = 91 OR rifstruttureesterne.IDtrattamento = 91) AND rifsede.IDstrumenti=55
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  7. #7
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Ho provato così

    codice:
    SELECT 
    	strutture.struttura, 
    	strutture.IDstruttura 
    FROM 
    	strutture 
    	INNER JOIN rifsede on (rifsede.IDstruttura = strutture.IDstruttura) 
    	LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura 
    	LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstruttura where 
    	(rifstruttura.IDtrattamento = 91 OR rifstruttureesterne.IDtrattamento = 91) AND rifsede.IDstrumenti=55 AND rifstruttureesterne.IDstrutture<>rifsede.IDstruttura AND rifstruttura.IDstruttura<>rifsede.IDstruttura
    Ma non mi visualizza niente. Teoricamente invece dovrebbe visualizzarmi solo un dato poichè due ID sono gia presenti in rifsede.

    E' un casino!!!
    www.beppegrillo.it
    Il blog di Beppe!!

  8. #8
    ma fai come ti ho detto
    semplifica la join
    i dati da escludere li escludi dalla where
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  9. #9
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    codice:
    SELECT 
    	strutture.struttura, 
    	strutture.IDstruttura 
    FROM 
    	strutture, rifsede 
    	LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura 
    	LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstruttura where 
    	(rifstruttura.IDtrattamento = 91 OR rifstruttureesterne.IDtrattamento = 91) AND (rifsede.IDstrumenti=55 AND rifstruttureesterne.IDstrutture<>rifsede.IDstruttura AND rifstruttura.IDstruttura<>rifsede.IDstruttura);
    Ho provato così ma mi estrae il dato sbagliato.

    www.beppegrillo.it
    Il blog di Beppe!!

  10. #10
    ah ops, nn avevo visto il where
    dopo ci do un occhiata
    Il Ticino è biancoblù
    DVDS delegato ufficiale

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.