SQL在3个表之间选择查询

KDh*_*nji 1 mysql sql subquery

我在创建查询以从3个表中提取数据时遇到了麻烦.

我有一个job_skus桌子,skus桌子和stage桌子,我试图选择整个月jobNo的所有工作skus,例如显示4月份所有工作skus的列表.

表的结构是

Job_Sku                             example data
  JobNo                             J4454             J4454
  Sku (refences Product.Sku)        93339             9947
  Quantity                          500               600
  Stage                             1                 2

Products
   Sku(primary key)                 93339             9947
   Description                      Galvanised Nails  Steel Rods 900mm

Stage
 jobNo                              J4454             J4454
 stage                              1                 2
 date                               04/04/2015        12/04/2015
Run Code Online (Sandbox Code Playgroud)

等等.

我想出了这个问题

SELECT jm.sku,jm.quantity,p.description 
FROM stage as s, products as p, job_sku as jm 
WHERE s.Date BETWEEN '2015-04-01' AND '2015-04-30' 
AND jm.stage = s.stage AND p.sku = jm.sku
Run Code Online (Sandbox Code Playgroud)

但它似乎在查询中获取重复数据.我是否需要使用某种类型的连接,或者可能提取该日期的所有阶段并将结果加入到job_sku表中?

Zoh*_*led 5

首先,使用正确的连接.您使用的连接样式已弃用.20多年来,
显式连接是ANSI SQL的一部分.

其次,如果你得到了正确的结果,但是有些行是重复的,那么你需要添加的就是 DISTINCT

SELECT DISTINCT jm.sku,jm.quantity,p.description 
FROM stage as s 
INNER JOIN job_sku as jm ON(jm.stage = s.stage)
INNER JOIN products as p ON(p.sku = jm.sku)
WHERE s.Date BETWEEN '2015-04-01' AND '2015-04-30' 
Run Code Online (Sandbox Code Playgroud)