【问题标题】:PHP mysql query against two tables针对两个表的 PHP mysql 查询
【发布时间】:2015-02-09 20:37:33
【问题描述】:

我有一个运行良好的 sql 查询,但我需要一种方法来扩展此查询,以便还从另一个名为 LineUps 的表中获取信息。

原始查询:

$stmt = $conn->prepare("SELECT channel, description, Tier
FROM Channel_LineUps WHERE Market_ID = 1 ORDER BY Tier ASC"); 

我现在还需要从另一个名为的表中获取数据。

LineUps 表中的列称为 DIG 和 HD。

我尝试了以下方法但不起作用:

$stmt = $conn->prepare("SELECT Channel_LineUps.channel,   Channel_LineUps.description, Channel_LineUps.Tier, LineUps.HD, LineUps.DIG FROM Channel_LineUps, LineUps WHERE Channel_LineUps.Market_ID = 1 ORDER BY Channel_LineUps.Tier ASC"); 

我希望能够确定一个频道在哪里被标记为 DIG 或 HD 的“是”,因此我认为我需要一个查询。

有什么想法吗?

【问题讨论】:

  • 请提供表结构和样本数据。乍一看,您似乎没有连接条件,因此您获得了笛卡尔连接,这可能需要很长时间才能渲染。
  • lineups 和 channel_lineups 表有什么共同之处?

标签: php mysql


【解决方案1】:

您需要在两个表之间创建一个连接,即您需要从第一个表 (Channel_lineUps)LineUps 表有一个公共列,然后您可以在这两个表上进行内部连接,例如 channel_LineUps.id=LineUps.related_column

您可以在 where 子句中添加 where Channel_lineUps.market_id=LineUps.market_id,它应该返回相关数据。

【讨论】:

  • 好的,谢谢。 Market_ID 对两者都是通用的。我将如何将其放入 php 代码中?
  • 尝试了以下操作但收到错误:$stmt = $conn->prepare("SELECT Channel_LineUps.channel, Channel_LineUps.description, Channel_LineUps.Tier, LineUps.HD, LineUps.DIG FROM Channel_LineUps, LineUps WHERE Channel_LineUps.Market_ID=LineUps.Market_ID AND Market_ID = 1 ORDER BY Channel_LineUps.Tier ASC");
  • 同样,如果您提供表结构和示例数据会更容易
  • 不确定我是否知道。不是 sql 人。我认为,我的问题与在 Market_ID =1 上执行 where 有某种关系 - 我需要限制为该 Market_ID 但如果我插入 where 子句以加入“WHERE Channel_LineUps.Market_ID=LineUps.Market_ID”,那么我似乎没有一种限制 Market_ID = 1 的方法查询似乎有效,但正如我所说,并没有通过 Market_ID 限制市场
  • 我最终使用了这个似乎可以解决问题的查询。我不认为我为大家提供了足够的信息来解决这个问题。 $stmt = $conn->prepare("SELECT distinct Channel_LineUps.channel, Channel_LineUps.description, Channel_LineUps.Tier, LineUps.HD, LineUps.DIG FROM Channel_LineUps, LineUps WHERE (LineUps.Market_ID = Channel_LineUps.Market_ID AND Channel_LineUps.Market_ID = 1 ) 按 Channel_LineUps.Tier ASC 排序");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
相关资源
最近更新 更多