怎么把mysql表连接在一起_如何在MySQL中连接多个表?

bd96500e110b49cbb3cd949968f18be7.png

I want to see what customers ordered what from a given manufacture.

I have theses tables (with columns):

items (item_num, order_num, stock_num, manu_code, quantity, etc.)

stock (stock_num, manu_code, description, unit_price, etc.)

orders (order_num, order_date, customer_num, ship_instruct, etc.)

customer (customer_num, fname, lname, company, address1, etc.)

This is my query right now, but I believe it is returning a cross product of some sort:

SELECT concat(c.fname," ", c.lname) AS fullname, s.description

FROM items i, stock s, customer c JOIN orders o

ON o.customer_num=c.customer_num

WHERE o.order_num=i.order_num AND i.manu_code = 'ANZ';

Which returns a big list (1000 lines) with lots of duplicate entires,

Anthony Higgens | baseball gloves

Anthony Higgens | baseball gloves

. .

. .

. .

Kim Satifer | running shoes

What am I doing wrong?

解决方案

Try this:

SELECT DISTINCT concat(c.fname," ", c.lname) AS fullname, s.description

FROM customer c

INNER JOIN orders o ON c.customer_num = o.customer_num

INNER JOIN items i ON o.order_num = i.order_num

INNER JOIN stock s on s.stock_num = i.stock_num

WHERE i.manu_code = 'ANZ'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值