I'm facing a strange behavior that I must be interpreting wrong, Given that computers always execute exactly what you tell them to, I must be telling it wrong :)
Use Case :
I have a table called orders_details
that consists of columns of interest, both foreign keys, order_id
and product_id
.
I also have a table called orders
which has a PK
of order_id
and a table called product_details
that has a PK
of product_id
column.
The requirement :
Select all orders with their respective order detail and product detail.
What I tried :
SELECT ord.shipping_ids, ord.order_id, ord.firstname, ord.lastname, ord.order_id,
ord.payment_id, det.product_id, ord.timestamp, prd.product
FROM `cscart_orders` AS ord
LEFT JOIN cscart_order_details AS det ON ord.order_id = det.order_id
LEFT JOIN cscart_product_details AS prd ON prd.product_id = det.product_id
Now this results is getting null for all the product_details
columns, so I don't get what I need.
If i replace the 2nd join to an inner join, I get corrupted data (multiple copies of each row without any logical order that I've noticed).
So, What am I missing? Isn't this how joins should work?
Edit :
http://sqlfiddle.com/#!2/f98463/2 -sqlfiddle, Never knew a fiddle exists for sql, sorry for not posting it in the first place.
2nd edit :
my DB tables had data integrity issues :( someone didn't properly set FK's and PK's, My original query does indeed work on a sample data, Thanks for pointing me to the right place to double check myself
Your given query working fine on sql fiddle If you give expected output so we can help you.
SELECT ord.shipping_ids, ord.order_id, ord.firstname, ord.lastname, ord.order_id,
ord.payment_id, det.product_id, ord.timestamp, prd.product
FROM `cscart_orders` AS ord
LEFT JOIN cscart_order_details AS det ON ord.order_id = det.order_id
LEFT JOIN cscart_product_details AS prd ON prd.product_id = det.product_id
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.