[Risolto] subquery

Discussioni sulle caratteristiche di database
Rispondi
Dalogg
Messaggi: 37
Iscritto il: sabato 13 gennaio 2018, 18:01

[Risolto] subquery

Messaggio da Dalogg »

Non sono sicuro che mi serva una subquery, cerco di spiegarmi con l'esempio in allegato.

Due " tabelle modelli e maglie la relazione 1-m un modello di maglia può avere vari colori associati.

Vorrei trovare in base a 2 colori i modelli di maglie a cui sono associati i colori, nell'esempio vorrei trovare i modelli che hanno il colore nero e rosso.

Ciao Dalogg
Allegati
maglieria.odb
(12.79 KiB) Scaricato 91 volte
Ultima modifica di charlie il venerdì 6 luglio 2018, 7:53, modificato 2 volte in totale.
Motivazione: Aggiunta spunta verde
LibreOffice 6.0.5.2 (x64) su Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: subquery

Messaggio da charlie »

Se non ho capito male ...

Codice: Seleziona tutto

SELECT "tb_colori"."cod_modello", "tb_colori"."colore", "tb_modelli"."Nome" FROM "tb_colori", "tb_modelli" WHERE "tb_colori"."cod_modello" = "tb_modelli"."cod_modello" AND ( "tb_colori"."colore" = 'nero' OR "tb_colori"."colore" = 'rosso' )
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Dalogg
Messaggi: 37
Iscritto il: sabato 13 gennaio 2018, 18:01

Re: subquery

Messaggio da Dalogg »

charlie ha scritto:Se non ho capito male ...

Codice: Seleziona tutto

SELECT "tb_colori"."cod_modello", "tb_colori"."colore", "tb_modelli"."Nome" FROM "tb_colori", "tb_modelli" WHERE "tb_colori"."cod_modello" = "tb_modelli"."cod_modello" AND ( "tb_colori"."colore" = 'nero' OR "tb_colori"."colore" = 'rosso' )
Ho sbagliato colori, volevo blu,rosso, però solo quei modelli che hanno entrambi i colori, nella mia tabella dovrebbe restituire navy e summer.

Ciao Dalogg
LibreOffice 6.0.5.2 (x64) su Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: subquery

Messaggio da charlie »

Oggi sono troppo pigro per cercare di metterle insieme :oops: :
Query1:

Codice: Seleziona tutto

SELECT "tb_colori"."cod_modello", "tb_modelli"."Nome" FROM "tb_colori", "tb_modelli" WHERE "tb_colori"."cod_modello" = "tb_modelli"."cod_modello" AND "tb_colori"."colore" = 'rosso'
Query2:

Codice: Seleziona tutto

SELECT "tb_colori"."cod_modello", "tb_modelli"."Nome" FROM "tb_colori", "tb_modelli" WHERE "tb_colori"."cod_modello" = "tb_modelli"."cod_modello" AND "tb_colori"."colore" = 'blu'
Query finale:

Codice: Seleziona tutto

SELECT "Query1"."Nome", "Query1"."cod_modello" FROM "Query2", "Query1" WHERE "Query2"."cod_modello" = "Query1"."cod_modello"
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Dalogg
Messaggi: 37
Iscritto il: sabato 13 gennaio 2018, 18:01

Re: subquery

Messaggio da Dalogg »

Credo di essere riuscito ad aggregare le query in questo modo :

Codice: Seleziona tutto Espandi visuale

Codice: Seleziona tutto

SELECT "cod_modello", "Nome" FROM "tb_modelli" WHERE "cod_modello" IN ( SELECT "tb_colori"."cod_modello" FROM "tb_colori" WHERE "tb_colori"."colore" = 'rosso' ) AND "cod_modello" IN ( SELECT "tb_colori"."cod_modello" FROM "tb_colori" WHERE "tb_colori"."colore" = 'blu' )
ho un solo dubbio che la query non sia tecnicamente corretta, non vorrei che il risultato ottenuto sia giusto ma casuale. Se hai tempo e voglia di darmi conferma della giustezza della query ti ringrazio in anticipo, non vorrei scombinare il lavoro anche di altre persone del forum che potrebbero usarla.

Ciao Dalogg
Allegati
maglieria_2.odb
(14.58 KiB) Scaricato 87 volte
LibreOffice 6.0.5.2 (x64) su Windows 10
Rispondi