PDA

Visualizza la versione completa : [MYSQL] Un query che non riesco a fare


ALonE
03-04-2009, 10:54
Ciao a tutti

io ho queste tre tabelle


Prodotti Magazzino Venduti
+------------+ +------------+ +------------+
|PRD_ID | |PRD_ID | |PRD_ID |
+------------+ +------------+ +------------+
|PRD_Prodotto| |NEG_ID | |NEG_ID |
+------------+ +------------+ +------------+
|PRD_QtaStock| |PRD_QtaSell |
+------------+ +------------+

Ora mi occorrerebbe una vista unica in cui visualizzare tutti i prodotti presenti nella tabella ma per ognuno, se presente, la quantità di prodotti presenti in Magazzino e la quantità di prodotti Venduti filtrandoli per il Negozio di riferimento.

Allora ho creato una vista mettendo in JOIN le tre tabelle in questo modo:


SELECT
prodotti.PRD_ID,
magazzino.NEG_ID as NEG_ID_Mag,
venduti.NEG_ID as NEG_ID_Ven,
IFNULL(prodotti.PRD_Prodotto, 0) as PRD_Prodotto,
IFNULL(magazzino.PRD_QtaStock, 0) as PRD_QtaStock,
IFNULL(venduti.PRD_QtaSell, 0) as PRD_QtaSell
FROM
(prodotti left join magazzino on (prodotti.PRD_ID = magazzino.PRD_ID))
left join venduti on (prodotti.PRD_ID = venduti.PRD_ID)

E poi la richiamo così:


SELECT
*
FROM
vw_vista
WHERE
(NEG_ID_Mag is Null AND NEG_ID_Ven is Null) OR
(NEG_ID_Mag = 1 AND NEG_ID_Ven is Null ) OR
(NEG_ID_Mag is Null AND NEG_ID_Ven = 1) OR
(NEG_ID_Mag = 1 AND NEG_ID_Ven = 1)

Aspettandomi di trovare in elenco "tutti i prodotti" e per ognuno, se presente, la sua quantità in magazzino e/o la quantità venduta... beh ovviamente non succede, ottengo questi errori:
1. i prodotti elencati non sono tutti
2. le vendite sono sempre a 0

Dove sbaglio? credo nella vista... o nel richiamarla?

Grazie
ALEX

luca200
03-04-2009, 14:36
Non è ben chiaro il rapporto tra i campi negozio delle tabelle magazzino e venduti

ALonE
03-04-2009, 15:10
In pratica le tabelle "Magazzino" e "Venduti" sono due tabelle (in realtà sul mio db delle viste) in cui registro:
Magazzino : il "saldo" (acquisti - vendite) del magazzino per quel prodotto per un determinato negozio
Venduti : le sole vendite di un determinato prodotto in un determinato negozio (qui in realtà da me è una vista in cui faccio la media del venduto di un prodotto dato un determinato periodo di tempo)

Così va meglio?

Loading