【问题标题】:MySQL Union all combine with MySQL Inner JoinMySQL Union 都与 MySQL Inner Join 结合
【发布时间】:2016-10-21 06:23:04
【问题描述】:

我想从allinventory_tb获取描述和型号。

所以我做了内部连接,但是当我要显示描述和模型时。

错误是这样的:

注意:未定义索引:描述,注意:未定义索引:模型。

有什么建议吗?

  |allinventory_tb|
  ----------------
  |in_code        |
  |description    |
  |model          |
  ---------------
    $sql = "select t.itemcode  as itemcode ,sum(t.qty) as qty
    from ( 
    select itemcode,qty  from barcode INNER JOIN allinventory_tb on barcode.itemcode = allinventory_tb.in_code
    union all
    select itemcode,qty from adjustment_tb INNER JOIN allinventory_tb on adjustment_tb.itemcode = allinventory_tb.in_code where adjustment_tb.status='APPROVED'
    union all
    select itemcode,(qty * -1) from soldout_pd INNER JOIN allinventory_tb on soldout_pd.itemcode = allinventory_tb.in_code) as t
    group by itemcode";

    $result = $conn->query($sql);

【问题讨论】:

  • 您的错误看起来像是来自 PHP 而不是 MySQL。原始查询是否在 MySQL 中运行而没有错误?控制台给你什么错误?
  • 查询运行没有错误,如果我要在 allinvty_tb 中显示该行,虽然我已经做了 INNER JOIN 的事情,但会显示错误。
  • 您能否始终引用您的表名?我仅在您的问题中看到了 三个 版本的名称:allinventory_tballinvty3allinvty_tb
  • 抱歉,我的代码已经更新了。

标签: php mysql join union


【解决方案1】:

使用您的查询,即

$sql = "select t.itemcode  as itemcode ,sum(t.qty) as qty
    from ( 
    select itemcode,qty  from barcode INNER JOIN allinventory_tb on barcode.itemcode = allinventory_tb.in_code
    union all
    select itemcode,qty from adjustment_tb INNER JOIN allinventory_tb on adjustment_tb.itemcode = allinventory_tb.in_code where adjustment_tb.status='APPROVED'
    union all
    select itemcode,(qty * -1) from soldout_pd INNER JOIN allinventory_tb on soldout_pd.itemcode = allinventory_tb.in_code) as t
    group by itemcode";


    $result = $conn->query($sql);

您将无法访问描述和模型列值,因为您没有在查询中指定期望列名,因此当您尝试在 PHP 中访问查询结果时,您将收到通知错误,例如:

注意:未定义索引:描述,注意:未定义索引:模型。

试试这个查询

$sql = "select description,model,t.itemcode  as itemcode ,sum(t.qty) as qty
    from ( 
    select description,model,itemcode,qty  from barcode as bc INNER JOIN allinventory_tb as ait on bc.itemcode = ait.in_code
    union all
    select description,model,itemcode,qty from adjustment_tb as adt INNER JOIN allinventory_tb as ait1 on adt.itemcode = ait1.in_code where adjustment_tb.status='APPROVED'
    union all
    select description,model,itemcode,(qty * -1) from soldout_pd as slp INNER JOIN allinventory_tb as ait2 on slp.itemcode = ait2.in_code) as t
    group by itemcode";


$result = $conn->query($sql);

希望这对你有用...

【讨论】:

  • 注意:试图获取非对象的属性。我已经检查过了。
  • @codeSeven 您能否根据上述查询发布您的 var_dump() 结果。我认为您访问错误。
  • 我同意@FaisalMohmand,请发布您的 var_dump() 结果
猜你喜欢
  • 1970-01-01
  • 2012-02-16
  • 2016-12-29
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2023-03-18
  • 2015-09-03
  • 1970-01-01
相关资源
最近更新 更多