PDA

View Full Version : [SQL] Ho bisogno di aiuto con una query Select


s1m0_93
21-04-2011, 12:57
Salve a tutti.
Ho un Db con queste due tabelle Prodotti e Categorie

PRODOTTI
ID_Prodotto || ID_Categoria || Nome || Prezzo

Categorie
|| ID_Categoria || Nome

Le due tabelle sono legate tramite la chiave ID_Categoria.

La mia richiesta è questa: è possibile selezionare i soli record della tabella Prodotti, che sono di una Categoria che nel nome contiene una determinata stringa?

Esempio

Mettiamo il caso che questi sono i vari record

PRODOTTI
ID_Prodotto || ID_Categoria || Nome || Prezzo ||
1 1 Pasta 1.00
2 1 Riso 1.00
3 1 Ravioli 1.00
4 2 Cioccolata 1.00
5 2 Torta 1.00
6 2 Marmellata 1.00

Categorie
|| ID_Categoria || Nome ||
1 Primi
2 Dolci



Io voglio selezionare i prodotti che contengono nel campo Nome della tabella Categorie, la stringa "Dol", di conseguenza dovrei visualizzare la seguente tabella



PRODOTTI
ID_Prodotto || ID_Categoria || Nome || Prezzo ||
4 2 Cioccolata 1.00
5 2 Torta 1.00
6 2 Marmellata 1.00


Ho provato a usare una query tipo questa ma non ha funzionato

"SELECT * FROM Prodotti,Categorie WHERE Categorie.Nome LIKE '%dol%';


Sapete aiutarmi?
Ho cercato di essere il più chiaro possibile...Se in qualche punto non mi sono spiegato bene ditemelo pure.

zuper
21-04-2011, 13:16
come sono legate le tabelle??

select
a.*
from
Prodotti a, Categorie b
where
b.Nome like 'Dol%'
and
a.ID_Categoria=b.ID_Categoria

Efem
21-04-2011, 13:18
Ma la query non ha funzionato perchè ti da errore, o perchè non ti da il risultato che volevi?
Comunque Prova così:


SELECT campo1,campo2,ecc
FROM
Categorie JOIN
Prodotti
ON( Prodotti.ID_Categoria = Categorie.ID_Categoria ) WHERE Categorie.Nome LIKE %dol%


[EDIT]
Scusa zuper non avevo visto la tua risposta.

Nightingale
22-04-2011, 12:39
Confermo... la query è incompleta perché manca la condizione di join fra le due tabelle, ovvero per id_categoria. :)

Gin&&Tonic
22-04-2011, 13:55
dovresti scrivere il Modello E-R( entità-relazione), se vuoi un aiuto.

La soluzione di zuper mi sembra corretta