【问题标题】:sqlite join query samplesqlite 连接查询示例
【发布时间】:2017-01-20 07:55:33
【问题描述】:

我有 3 个名为 productSaleStatus、productSalesVolume、productInfo 的表

productSaleStatus 表结构为

+--------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+-------+ | productCode | int(11) | YES | | NULL | | | sales | int(11) | YES | | NULL | | | year | int(11) | YES | | NULL | | | month | int(11) | YES | | NULL | | | day | int(11) | YES | | NULL | | | aFewWeeks | int(11) | YES | | NULL | | | dayOfTheWeek | int(11) | YES | | NULL | | +--------------+---------+------+-----+---------+-------+

productSalesVolume 表结构为

+------------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+-------+ | productCode | int(11) | YES | | NULL | | | optimumInventory | int(11) | YES | | NULL | | | productDate | date | YES | | NULL | | +------------------+---------+------+-----+---------+-------+

productInfo表结构是

+-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | productCode | int(11) | YES | | NULL | | | productName | varchar(10) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+

productSaleStatus 的示例数据是

+-------------+-------+------+-------+------+-----------+--------------+ | productCode | sales | year | month | day | aFewWeeks | dayOfTheWeek | +-------------+-------+------+-------+------+-----------+--------------+ | 1 | 100 | 2016 | 9 | 30 | 2 | 1 | | 2 | 200 | 2016 | 10 | 30 | 2 | 1 | | 1 | 150 | 2017 | 1 | 1 | 2 | 1 | | 2 | 125 | 2017 | 1 | 2 | 2 | 1 | +-------------+-------+------+-------+------+-----------+--------------+

productSalesVolume 的示例数据是

+-------------+------------------+-------------+ | productCode | optimumInventory | productDate | +-------------+------------------+-------------+ | 1 | 500 | 2016-10-10 | | 2 | 1000 | 2016-10-08 | | 1 | 1500 | 2016-10-20 | | 2 | 2000 | 2017-01-01 | +-------------+------------------+-------------+

productInfo的示例数据是

+-------------+-------------+ | productCode | productName | +-------------+-------------+ | 1 | test | | 2 | hello | +-------------+-------------+

所以我想要的结果是

1, test, 150, 2017, 1, 1, 1500, 2016-10-20 2, hello, 125, 2017, 1, 2, 2000, 2017-01-01

任何人都可以写示例查询给我吗?

【问题讨论】:

  • 将年、月和日存储为单独的列来代替单个日期列通常是一个坏主意,并且会使您的查询变得比它必须的更复杂。
  • 我知道,但是公司已经设置好了
  • @TimBiegeleisen:但是 SQLite 没有正确的 DATE 类型
  • @a_horse_with_no_name 是的......但是有不同级别的正确。此数据中的月份并非都是两位数。这个我就不回答了。

标签: sql database sqlite select


【解决方案1】:

根据您提供的示例数据,这应该会产生您想要的结果。虽然我认为您可能需要添加一个 group by 和 sum sales 与完整的数据集

SELECT pi.ProductName, pss.sales, pss.month, pss.day, psv.optimumInventory, psv.productDate
FROM productSaleStatus pss
      INNER JOIN productInfo pi
         ON pss.productCode = pi.productCode
      INNER JOIN productSalesVolume psv
         ON pss.productCode = psv.productCode
WHERE pss.year = '2017'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多