On Tue, Aug 25, 2009 at 6:55 AM, Deviad <dev...@msn.com> wrote:

> Hello,
> I have been training for a test on Database Design and MySQL.
> The following is inside a file we have to run before starting to code
> what the excercises require us to.
> Call the file as you wish and run it if it helps to understand the
> reason behind my problem.
> ---------------------------
> DROP DATABASE IF EXISTS premiere;
>
> CREATE DATABASE premiere;
>
> USE premiere;
>
> create table if not exists Articoli(
>              NroArt char(4) primary key,
>                  descrizione char(20),
>                  giacenza int,
>                  categoria char (2),
>                   PrezzoUnitario decimal(8,2)
> ) TYPE=INNODB;
>
> create table if not exists Rappresentanti(
>                 CodRappr char(2) primary key,
>                   cognome char(10),
>                   nome char(8),
>                   via char (15),
>                   citta char(15),
>                   prov char(2),
>                   cap char (5),
>                 TotProvv decimal(8,2),
>                   PerProvv decimal(8,2)
> ) TYPE=INNODB;
>
>
> create table if not exists clienti(
>                CodCliente char(3) primary key,
>                    cognome char(10),
>                    nome char(8),
>                    via char (15),
>                    citta char(15),
>                    prov char(2),
>                    cap char (5),
>              saldo decimal(8,2),
>                    fido decimal(8,2),
>                    CodRappr char(2) not null references
> Rappresentanti(CodRappr)
> ) TYPE=INNODB;
>
>
> create table if not exists Ordini(NroOrdine char(6) primary key,
>                    data date,
>                  CodCliente char(3) not null
>                    references Clienti(CodClienti)
> ) TYPE=INNODB;
>
>
> insert into articoli
>      values ('AX12','ferro da stiro',104,'cs',24.95);
> insert into articoli
>      values ('AZ52','freccette',20,'sp',12.95);
> insert into articoli
>    values ('BA74','pallone',40,'sp',29.95);
> insert into articoli
>      values ('BH22','tritatutto',05,'cs',24.95);
> insert into articoli
>      values ('BT04','forno',11,'el',149.49);
> insert into articoli
>      values ('BZ66','lavatrice',52,'el',399.99);
> insert into articoli
>      values ('CA14','setaccio',78,'cs',39.99);
> insert into articoli
>      values ('CB03','bicicletta',44,'sp',299.99);
> insert into articoli
>      values ('CX11','frullino',142,'cs',22.95);
> insert into articoli
>      values ('CZ81','tavola pesi',68,'sp',349.95);
>
>
> insert into Rappresentanti
>    values('03','Jones','Mary','123 Main','Grant','MI','49219',215,5);
> insert into Rappresentanti
>    values('06','Smith','William','102
> Raymond','Ada','MI','49441',49412.5,7);
> insert into Rappresentanti
>    values('12','Diaz','Miguel','419 Harper','Lansing','MI','49224',2150,5);
>
>
> insert into clienti
>      values
> ('124','Adams','Sally','481Oak','Lansing','MI','49224',818.75,1000,'03');
> insert into clienti
>      values
> ('256','Samuel','Ann','215Pete','Grant','MI','49219',21.5,1500,'06');
> insert into clienti
>     values
> ('311','Charles','Don','48College','Ira','MI','49034',825.75,1000,'12');
> insert into clienti
>      values
> ('315','Daniels','Tom','914Charry','Kent','MI','48391',770.75,750,'06');
> insert into clienti
>      values
> ('405','Williams','Al','519Watson','Grant','MI','49219',402.75,1500,'12');
> insert into clienti
>      values
> ('412','Adams','Sally','16Elm','Lansing','MI','49224',1817.5,2000,'03');
> insert into clienti
>      values
> ('522','Nelson','Mary','108Pine','Ada','MI','49441',98.75,1500,'12');
> insert into clienti
>      values
> ('567','Dinh','Tran','808Ridge','Harper','MI','48421',402.4,750,'06');
> insert into clienti
>      values
> ('587','Galvez','Mara','512Pine','Ada','MI','49441',114.6,1000,'06');
> insert into clienti
>      values
> ('622','Martin','Dan','419Chip','Grant','MI','49219',1045.75,1000,'03');
>
>
> insert into  ordini
>    values('12489','2002-09-02','124');
> insert into  ordini
>    values('12491','2002-09-02','311');
> insert into  ordini
>    values('12494','2002-09-04','315');
> insert into ordini
>    values('12495','2002-09-04','256');
> insert into ordini
>    values('12498','2002-09-05','522');
> insert into  ordini
>    values('12500','2002-09-05','124');
> insert into  ordini
>    values('12504','2002-09-05','522');
> -----------------------------------------------------
>
> Now, this is what is giving me an issue:
> -------------------------------------------------------
> use premiere;
>
>
> select *
> from clienti as c join rappresentanti as r on c.codrappr = r.codrappr
> where r.codrappr='03';
>
> select *
> from rappresentanti NATURAL JOIN clienti;
> ------------------------------------------------------
>
> For some weird reason the natural join returns an empty set, but there
> is a column, just the one I need whose name is the same
> in both relations which is Codrappr.
> Why doesn't it work as it's supposed to?
>
> As you can see they are the same:
> create table if not exists Rappresentanti(
>                 CodRappr char(2) primary key,
>                   cognome char(10),
>                   nome char(8),
>                   via char (15),
>                   citta char(15),
>                   prov char(2),
>                   cap char (5),
>                 TotProvv decimal(8,2),
>                   PerProvv decimal(8,2)
> ) TYPE=INNODB;
>
>
> create table if not exists clienti(
>                CodCliente char(3) primary key,
>                    cognome char(10),
>                    nome char(8),
>                    via char (15),
>                    citta char(15),
>                    prov char(2),
>                    cap char (5),
>              saldo decimal(8,2),
>                    fido decimal(8,2),
>                  CodRappr char(2) not null references
> Rappresentanti(CodRappr)
> ) TYPE=INNODB;
>
>
>
> Thank you very much in advance.
> I hope someone will solve this thing.
>
>
I think the result of NATURAL JOIN is correct.

For refference about JOIN and especially NATURAL JOIN, you can see
http://dev.mysql.com/doc/refman/5.1/en/join.html


-- 
Muhammad Subair

Reply via email to