Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

SQL Join with 3 Tables and WHERE

i finish off make this exercise but i wanna more opinion about this final result, if you make other way or tips to improve me current code.

This picture abelow is the explanation about this question.

enter image description here

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

-- create a table
CREATE TABLE supplier (
  SUPPLIER_CODE TEXT PRIMARY KEY,
  SUPPLIER_NAME TEXT NOT NULL,
  CITY TEXT NOT NULL
);

CREATE TABLE part (
  CODE_PART TEXT PRIMARY KEY,
  NAME_PART TEXT NOT NULL,
  PRICE TEXT NOT NULL
);

CREATE TABLE car (
  CODE_CAR TEXT PRIMARY KEY,
  NAME_CAR TEXT NOT NULL,
  TYPE TEXT NOT NULL
);

CREATE TABLE supply (
  CODE_SUPPLIER TEXT PRIMARY KEY,
  CODE_PIECE TEXT NOT NULL,
  CODE_CAR TEXT NOT NULL
);

INSERT INTO supplier VALUES ('S1', 'Auto peças', 'Camacan');
INSERT INTO supplier VALUES ('S2', 'Peças FTX', 'VITORIA');
INSERT INTO supplier VALUES ('S3', 'Importados AUTO', 'VITORIA');

INSERT INTO part VALUES ('P1', 'MOTOR', '1000');
INSERT INTO part VALUES ('P2', 'VELA', '1500');
INSERT INTO part VALUES ('P3', 'MOTOR', '3000');

INSERT INTO car VALUES ('C1', 'KOMBI', 'HATCH');
INSERT INTO car VALUES ('C2', 'FUSCA', 'HATCH');
INSERT INTO car VALUES ('C3', 'KOMBI', 'HATCH');

INSERT INTO supply VALUES ('S1', 'P2', 'C2');
INSERT INTO supply VALUES ('S2', 'P1', 'C1');
INSERT INTO supply VALUES ('S3', 'P3', 'C3');

-- fetch some values
SELECT  supplier.SUPPLIER_NAME, part.PRICE 
FROM supplier INNER JOIN supply, part, car ON supply.CODE_SUPPLIER = supplier.SUPPLIER_CODE AND supply.CODE_PIECE = part.CODE_PART AND supply.CODE_CAR = car.CODE_CAR 
WHERE (supplier.CITY='VITORIA' AND part.NAME_PART='MOTOR' AND car.NAME_CAR='KOMBI' );

Final result

Peças FTX|1000
Importados AUTO|3000

I use the website, https://www.mycompiler.io/new/sql to test my sql.

>Solution :

Your SQL functions correctly in SQLite.

One critique of your query: You use a combination of JOIN and the old-school supply, part, car comma join syntax. It’s far clearer, at least to 21st-century data people, to use JOIN syntax throughout. And, if you have to change things to use a LEFT JOIN later, it’s less error prone. And, it doesn’t port to most other database server makes.

One style thing: Be fanatic about formatting your queries to be readable. One long line: not readable. It’s important to be able to read and reason about queries, and formatting helps a lot. It’s important for yourself a year from now, and for colleagues.

Here is my rewrite of your query to match my suggestions.

SELECT  supplier.SUPPLIER_NAME, part.PRICE

        FROM supplier
  INNER JOIN supply   ON supply.CODE_SUPPLIER = supplier.SUPPLIER_CODE
  INNER JOIN part     ON supply.CODE_PIECE    = part.CODE_PART
  INNER JOIN car      ON supply.CODE_CAR      = car.CODE_CAR  

 WHERE supplier.CITY='VITORIA'
   AND part.NAME_PART='MOTOR'
   AND car.NAME_CAR='KOMBI';
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading