0

I'm studying SQL at the moment and got this exercise:

create table customer
(
   id int auto_increment,
   name varchar(255) null,
   state varchar(2) null,
   constraint customer_pk
       primary key (id)
);

insert into customer(name, state) values ('Joao', 'SP');
insert into customer(name, state) values ('Andre', 'SP');
insert into customer(name, state) values ('Janaina', 'SP');
insert into customer(name, state) values ('Gabriela', 'SC');
insert into customer(name, state) values ('Fernanda', 'MG');
insert into customer(name, state) values ('Daniel', 'RJ');
insert into customer(name, state) values ('Pedro', 'RJ');

create table `sales_order`
(
   id int auto_increment,
   order_number varchar(255) null,
   customer_id int null,
   constraint order_pk
       primary key (id)
);

insert into sales_order(order_number, customer_id) values ('4001212', 1);
insert into sales_order(order_number, customer_id) values ('5001212', 1);
insert into sales_order(order_number, customer_id) values ('6001212', 1);
insert into sales_order(order_number, customer_id) values ('7001212', 2);
insert into sales_order(order_number, customer_id) values ('8001212', 2);
insert into sales_order(order_number, customer_id) values ('8001212', 3);
insert into sales_order(order_number, customer_id) values ('9001212', 4);
insert into sales_order(order_number, customer_id) values ('1001212', 7);

create table sales_order_item
(
   id int auto_increment,
   sales_order_id int null,
   sku varchar(255) null,
   cost float null,
   constraint order_item_pk
       primary key (id)
);

insert into sales_order_item(sales_order_id, sku, cost) values(1, 'MOB100K456', 100.0);
insert into sales_order_item(sales_order_id, sku, cost) values(1, 'MOB200K456', 200.0);
insert into sales_order_item(sales_order_id, sku, cost) values(1, 'MOB300K456', 300.0);

insert into sales_order_item(sales_order_id, sku, cost) values(2, 'MOB400K456', 400.0);

insert into sales_order_item(sales_order_id, sku, cost) values(3, 'MOB450K456', 450.0);

insert into sales_order_item(sales_order_id, sku, cost) values(4, 'MOB600K456', 600.0);

insert into sales_order_item(sales_order_id, sku, cost) values(5, 'MOB600K456', 600.0);
insert into sales_order_item(sales_order_id, sku, cost) values(5, 'MOB650K456', 650.0);

insert into sales_order_item(sales_order_id, sku, cost) values(6, 'MOB610K456', 610.0);
insert into sales_order_item(sales_order_id, sku, cost) values(6, 'MOB620K456', 620.0);
insert into sales_order_item(sales_order_id, sku, cost) values(6, 'MOB630K456', 630.0);
insert into sales_order_item(sales_order_id, sku, cost) values(6, 'MOB640K456', 640.0);

insert into sales_order_item(sales_order_id, sku, cost) values(7, 'MOB600K456', 600.0);

insert into sales_order_item(sales_order_id, sku, cost) values(8, 'MOB600K456', 600.0);

Now I need to run a SELECT statement that returns name, order_number, sku and value.

Is it possible to get the data only with 1 statement?

Could you help me understand this? I feel like this is a silly question but will help me a lot.

Thanks in advance

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • Hint: do a `JOIN`. – jarlh Aug 31 '21 at 19:58
  • 1
    BTW, are you sure you're using MS SQL Server? The above code looks more like MySQL. – jarlh Aug 31 '21 at 19:59
  • 1
    `auto_increment` is not a SQL Server column property - this looks like MySQL instead. Please update your tags with the **actual** RDBMS you're using. – Dai Aug 31 '21 at 20:01
  • 1
    `state varchar(2) null` should be `state char(2) NOT NULL` and `cost float null` should be `cost decimal(8,2) NOT NULL`: **NEVER** use floating-point types to store money/currency values because they're imprecise. – Dai Aug 31 '21 at 20:02

0 Answers0