【问题标题】:obtain results of two different tables mysql获取两个不同表mysql的结果
【发布时间】:2017-01-28 00:24:27
【问题描述】:

我有两张桌子。

桌子库存

fecha       | tarifa

2017-01-06    500 
2017-01-07    500 
2017-01-08    500 

餐桌促销

fecha      |  percent

2017-01-07    0.10
2017-01-08    0.10
2017-01-07    0.15
2017-01-08    0.15

我需要在mysql查询时获取:

fecha       | tarifa  | percent

2017-01-06    500      0
2017-01-07    500      0.10
2017-01-08    500      0.10
2017-01-06    500      0
2017-01-07    500      0.15
2017-01-08    500      0.15

谢谢!!!

更新

我需要用查询结果创建这个数组。

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [fecha] => 2017-01-06
                    [tstandard]=>500
                    [porcentaje] => 0.00
                )

            [1] => Array
                (
                    [fecha] => 2017-01-07
                    [tstandard]=>500
                    [porcentaje] => 0.10
                )

            [2] => Array
                (
                    [fecha] => 2017-01-08
                    [tstandard]=>500
                    [porcentaje] => 0.10
                )
        )

    [2] => Array
        (
            [0] => Array
                (
                    [fecha] => 2017-01-06
                    [tstandard]=>500
                    [porcentaje] => 0.00
                )

            [1] => Array
                (
                    [fecha] => 2017-01-07
                    [tstandard]=>500
                    [porcentaje] => 0.15
                )

            [2] => Array
                (
                    [fecha] => 2017-01-08
                    [tstandard]=>500
                    [porcentaje] => 0.15

                )
        )
)

我已经完成了数组,但没有每天的 tstandard

【问题讨论】:

  • 使用LEFT JOIN 连接两个表,其中一个可能不包含与另一个匹配的行。
  • SO 不是免费的编码服务。您必须自己尝试解决问题。如果您无法使其正常工作,请发布您尝试过的内容,我们会帮助您解决问题。

标签: php mysql


【解决方案1】:

您可以使用left outer join 来获得所需的输出,例如:

SELECT s.fecha, s.tarifa, IFNULL(p.percent, 0)
FROM stock s LEFT JOIN promotions p ON s.fecha = p.fecha;

这是SQL Fiddle。

更新

如果你想用日期限制输出,你可以使用下面的查询:

SELECT s.fecha, s.tarifa, IFNULL(p.percent, 0)
FROM stock s LEFT JOIN promotions p ON s.fecha = p.fecha
WHERE s.fecha BETWEEN $checkin AND $checkout;

【讨论】:

  • 有一个非常好的解决方案,但是如果客人选择日期我该怎么办。 table stock 是一个包含一年中每一天的表格。有酒店预订系统。餐桌促销仅包含折扣天数。当我尝试使用左外连接并使用 select .... where fecha >= $checkin 和 fecha
  • 哦,你是我的上帝。杰杰。 ¿ 我可以问最后一个问题吗?我怎样才能获得一个用于促销的阵列,并且每个阵列都包括咨询的所有天数。例如,一个数组包含三天(6、7、8、- 第 6 天、0.00% - 和其他天 0.10%),另一个数组也包含三天(6、7、8 - 第 6 天, 0.00%,其他日子 0.15%)。你应该用 php 做这个吗?
  • 我查询的las表有我想要得到的结果。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 2013-12-26
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 2018-12-02
  • 2015-06-11
相关资源
最近更新 更多