Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [sql] valore contenuto in sottoquery

    Salve a tutti

    Devo scrivere una query di selezione SU 3 tabelle che ritorni un recordset composto da tutti i record con campo chiave uguale nelle tabelle 1 e 2 (fin qui ok), ma che tale indice NON SIA PRESENTE nella colonna x della tabella 3.


    Qui nell'esempio cerco di visualizzare tutte le auto vendute per le quali non è stato creato il documento di vendita.
    Ho provato così ma non funziona
    codice:
    Tabella1
    Idauto chiave primaria
    modello
    
    Tabella2
    Idauto chiave primaria
    venduta
    prezzovendita
    
    Tabella3
    idfattura chiave primaria
    idauto (la mia colonna x)
    
    Query:
    
    select * from tabella1, tabella2 where 
    (tabella1.idauto=tabella2.idauto and tabella1.idauto not in 
    (select idauto from tabella3))
    Grazie in anticipo
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

  2. #2
    sinceramente a me funziona!

    mi son creato le tabelle, le ho popolate un po e funziona la query
    codice:
    select * from tabella1, tabella2 
    where tabella1.idauto=tabella2.idauto and tabella1.idauto not in 
    (select idauto from tabella3)
    ma gli attributi IDAuto di tabella2 e tabella3 li hai impostati per referenziare tabella1.IDAuto
    ovvero:
    codice:
    Tabella2
    Idauto int8 PRIMARY KEY REFERENCES tabella1(IDAuto)
    venduta ...
    prezzovendita ...
    www.matteosteri.it

  3. #3
    Si, tabella 1 e tabella 2 son collegate.

    Tabella 3 invece ha un altro campo chiave, e il suo campo idauto non può essere chiave... perchè tabella 3 descrive delle fatture, che possono anche non essere di macchine.

    Cmq a me la query ritorna vuota...

    Altri suggerimenti?
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

  4. #4
    Ci sono riuscito!

    Innanzi tutto ho tralasciato la tabella 1 che non era essenziale, e il problema veniva fuori perchè avevo degli idauto null in t3. Basta dirgli nella sottoquery che siano not null, e tutto magicamente funziona.

    OCCHIO AI CAMPI NULL!

    Cmq per aggiungere la T1 occorre una vista o alternativamente una seconda sottoquery nella clausola from.
    Per completezza posto la query:
    codice:
    SELECT *
    FROM [select * from tabella1, tabella2 where tabella1.idauto=tabella2.idauto]. AS vista
    WHERE ((([tabella1].[idauto]) Not In 
    (select tabella3.idauto from tabella3 where idauto is not null)));
    ciao!
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

  5. #5
    infatti non riuscivo a capire come poteva accadere che alcune fatture non si riferissero all'acquisto di auto, però ora mi è chiaro. comunque anche io l'ho risolto. basta che ti fai una vista che seleziona tutte e sole le fatture di auto e poi la solita query dove IDAuto non è tra i valori della vista. MI è venuta proprio ora!

    ciao
    www.matteosteri.it

  6. #6
    Infatti posso avere fatture (tabella 3) NON RELATIVE AD ALCUNA VENDITA (tabella2) es fatture di provvigione, manutenzioni, ecc ecc che non sono propriamente "vendite", altrimenti non mi rompevo il cranio e facevo le due tabelle in relazione 1 a 1, o ancora meglio una tabella unica!!!

    Ecco i campi null e il casino... cmq meglio che sia risolto.

    Grazie W le sottoquery e le viste!
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

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.