|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2009
Città: Lecce
Messaggi: 1356
|
Problema con Join MysQL
Salve a tutti ho il seguente codice
drop database if exists elettro; create database if not exists elettro; use elettro; create table if not exists prodotti ( Codice int primary key, Categoria varchar (20), Sottocategoria varchar (20), Descrizione varchar (50), Marca varchar (20), Prezzo int, Disponibilita varchar (2) ); create table if not exists Clienti ( Codice int primary key, Nome varchar (20), Eta int ); create table if not exists Storico ( Data_acquisto date, quantita int, Codice_CL int, Codice_Pr int, foreign key (Codice_CL) references Clienti (Codice), foreign key (Codice_Pr) references prodotti (Codice) ); insert into prodotti values (10000,'Cat1','Sott1','Descrizione1','Marca1', 150, 'SI'); insert into prodotti values (20000,'Cat2','Sott2','Descrizione2','Marca2', 350, 'SI'); insert into prodotti values (30000,'Cat3','Sott3','Descrizione3','Marca3', 450, 'NO'); insert into prodotti values (40000,'Cat4','Sott4','Descrizione4','Marca4', 150, 'SI'); insert into Clienti values (101,'Nome1',18); insert into Clienti values (102,'Nome2',20); insert into Clienti values (103,'Nome3',38); insert into Clienti values (104,'Nome4',19); insert into Clienti values (105,'Nome5',14); insert into storico values ('2016-01-03', 3, 101, 10000); insert into storico values ('2016-02-03', 2, 102, 20000); insert into storico values ('2016-04-03', 4, 103, 30000); insert into storico values ('2016-01-03', 1, 104, 40000); insert into storico values ('2016-01-03', 6, 105, 10000); select p.Marca from prodotti as p where p.Prezzo<=450 and p.Prezzo>=150 and p.Disponibilita='SI'; /* Visualizzare nome e punti di ogni acquirente (1 punto per ogni 10€ di spesa) */ select c.Nome, ((s.quantita*p.Prezzo)/10) as punti from Storico as s ,prodotti as p, Clienti as c where s.Codice_Pr=p.Codice and s.Codice_CL=c.Codice; select c.Nome, ((s.quantita*p.Prezzo)/10) as punti from Storico as s ,prodotti as p, Clienti as c join Storico as sr on sr.Codice_CL=c.Codice Join Storico as st on st.Codice_Pr=p.Codice; ora come potete vedere nella penultima query ho usato la selezione multipla e funziona alla perfezione, nell'ultima ho usato due join e mi si presenta il seguente codice d'errore "ERROR 1054 (42S22): Unknown column 'p.Codice' in 'on clause" Riesco ad usare il join solo se devo fare una sola relazione, se invece devo fare più relazioni fra più tabelle come in questo caso non so come fare perchè si presenta questo errore
__________________
Oggetti attualmente in vendita:HD7950 + Phenom II 1090T /// HAF 922 /// XFX R9 280X 230€ |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Quanti alias e sintassi mescolate, una cosa più limpida?
Codice:
SELECT Clienti.Nome, ((Storico.quantita*prodotti.Prezzo)/10) as punti FROM Storico INNER JOIN prodotti ON Storico.Codice_Pr = prodotti.Codice INNER JOIN Clienti ON Storico.Codice_CL = Clienti.Codice ; Codice:
+-------+----------+ | Nome | punti | +-------+----------+ | Nome1 | 45.0000 | | Nome2 | 70.0000 | | Nome3 | 180.0000 | | Nome4 | 15.0000 | | Nome5 | 90.0000 | +-------+----------+ 5 rows in set (0.00 sec)
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2009
Città: Lecce
Messaggi: 1356
|
Grazie! Sono alle prime armi e adesso ho capito anche il perchè mi dava errori di ridondanza quando usavo il join!!!
__________________
Oggetti attualmente in vendita:HD7950 + Phenom II 1090T /// HAF 922 /// XFX R9 280X 230€ |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:08.