2010-02-07 63 views
0

我有两个表:如何加入这些表格?

**WEEK** 

-id 

-week # 

**ITEM** 

-id 

-name 

-is_marked 

-week # 

我的最终期望的结果是有一个具有一个行跨度=“3”表在它细胞的表,随后的三个结果,而每星期从SELECT * FROM item WHERE week = week_number AND is_marked = 1

我不知道我是否需要加入任何东西,因为我不需要任何来自WEEK表的数据,但我无法完全了解如何通过结果循环以获得所需的输出。思考?

回答

1

好了,一些想法。

  1. 你真的需要数据库中的星期表吗?它的用途是什么?它似乎是项目表的值。它不是一个真正的实体,因此可能不需要单独的表IMO。

  2. 你是对的,因为没有什么可以加入到两张表中。如果物品表中有week_id,而不是数字,那么这是有道理的,除了我的意见1

  3. 为什么每周只有3件物品?如果你真的想这样做,我会建议你按项目表中的星期编号排序。您可以放弃代码中的其他值。在这种情况下使用order by子句。或者,您可以遍历周表中的所有值,对于每个值,使用周数从项目表中选择。您可以使用限制条款仅返回3个项目。

+0

这些都是好想法,谢谢。我当然不是制作高效数据库的最佳人选。尽管如此,我在周表中还有其他数据,但这与这个特定问题无关。我将从周表转换周周编号到周编号表。这是个好主意。 – 2010-02-07 18:16:15

1

更改您的项目表以保存星期ID而不是值。

那么你可以做一个简单的做加盟:

select i.name 
from item i 
inner join week w on w.id = i.id 
where w.week = '2' and i.is_marked = '1'