【问题标题】:PHP MySQL JoinsPHP MySQL 连接
【发布时间】:2011-07-31 05:45:35
【问题描述】:

有没有办法让我做以下事情?

表一

id   c_id   type
-------------------
1    1       7
2    2       7
3    3       5
4    4       7

表二

id   title   live
-------------------
1    row1    1
2    row2    0
3    row3    0
4    row4    1

c_id 列将表一的数据链接到表二。示例:在表 ONE 中,如果 c_id 为 2,则表 ONE 中的该行将直接链接到表 2 的 id 为 2 的行,其标题为“row2”。

我想从表 ONE 中选择类型为 7 的所有内容,但前提是它们在表 2 中的关联数据已实时设置为 1。

我想我会这样做,但这似乎不起作用:

SELECT * FROM ONE, TWO WHERE ONE.type='7' AND TWO.live='1' ORDER BY ONE.id DESC LIMIT 5

我希望上面只返回表 ONE 的第 1 行和第 4 行,因为虽然表 ONE 有三行类型为“7”的行,但表 2 中只有第 1 行和第 2 行的关联行设置为 1。

【问题讨论】:

  • 它实际上返回了什么?您缺少 JOIN 谓词。

标签: php mysql arrays join


【解决方案1】:

你很接近...尝试使用隐式连接:

SELECT ONE.* FROM ONE, TWO WHERE ONE.type='7' AND TWO.live='1' AND ONE.c_id = TWO.id ORDER BY ONE.id DESC LIMIT 5

【讨论】:

  • 谢谢!我认为这行得通。我只需将“SELECT ONE.* FROM ONE”更改为“SELECT * FROM ONE”,因为我想返回两个表中的所有数据。不过,我可能没有在我的问题中说清楚。再次感谢:)
【解决方案2】:
select * from one join two on c_id = two.id where type=7 and live = 1
order by one.id desc limit 5

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 2012-11-10
    • 2023-03-20
    • 1970-01-01
    • 2012-10-07
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多