【发布时间】:2014-04-03 17:19:39
【问题描述】:
概念很简单:根据某个id从table1中获取一个字段,根据table1中的不同id从table2中获取一个字段,表示最高值的记录。一个查询,两个表。
我已经尝试过,加入,子查询,加入和子查询以及所有的混合都无济于事。如果有人能够做到这一点,他们将受到我最深的敬意,因为我已经尝试了两天了。以下是伪代码中的步骤:
- 表格:table1(field1 和 field3)和 table2(field2)
- 从表 1 字段 1 和表 2 字段 2 中选择
- 根据table1.id获取field1
- 根据table1.id从table2中获取field2,其中table1.id最高 field3 中的值
须知:table2 有一个链接到表 1 的外键。我使用不同的方式使用 table1 中的信息来创建评论及其 cmets,它们基本上是相同的,包含相同类型的数据,但使用方式不同。我通过知道谁是父母(评论)和谁是孩子(评论)来将他们分开。例如,我正在尝试根据查看次数最多的评论来获取评论数据及其描述。
示例查询:
SELECT reviews.title, descriptions.description
FROM reviews, descriptions
WHERE reviews.id = 1
AND descriptions.review_id = (
SELECT id
FROM reviews
WHERE views = (
SELECT MAX(views)
FROM reviews
WHERE parent = 1
-- Parent is the same id used above to select the review
)
);
我在大多数查询中得到空集结果我尝试过其他查询只是在视图字段中给我重复的数据。 我知道你们中的一些人可能会争辩说我应该为我的 cmets 制作一个不同的表,但我认为这种方式可以节省大量的数据库空间,我认为这是一个挑战。提前谢谢大家。
注意:请阅读问题 - 不完整阅读将难以理解。
根据要求:
table: reviews
id | title | views |
2 'My Title' 5
1 'Other Title' 1
3 'Third Title' 3
table: description
id | description | review_id |
1 'Good description' 2
2 'Great description' 1
3 'Bad description' 3
结果应该是:“良好的描述”被选中,因为它是链接到查看次数最多的评论的描述。根据传入的标题选择标题。
title | description |
'Other Title' 'Good description'
【问题讨论】:
-
帖子的标题应该反映问题
-
嗯,这对我来说似乎是不可能的......
-
您能否稍微澄清一下-我想我知道您想通过查询来判断您想要什么-您可以从表 1 中执行 3 个虚拟行吗从表 2 中执行 3 个虚拟行,然后您对查询的期望是什么最后 - 让生活更轻松,让我不用写一些你不想要的 SQL!
-
使用示例表检查我的编辑@Graham Ritchie。
标签: php mysql sql join subquery