代码之家  ›  专栏  ›  技术社区  ›  Alex Mcp

我怎么加入这些桌子?

  •  0
  • Alex Mcp  · 技术社区  · 16 年前

    我有两张桌子:

    **WEEK**
    
    -id
    
    -week #
    
    **ITEM**
    
    -id
    
    -name
    
    -is_marked
    
    -week #
    

    我最后想要的结果是得到一个表,该表有一个rowspan=“3”表单元格,其中 week # 接下来是每周的三个结果 SELECT * FROM item WHERE week = week_number AND is_marked = 1

    我不知道是否需要加入任何内容,因为我确实不需要周表中的任何数据,但我无法完全了解如何循环查看结果以获得所需的输出。思想?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Tanmay    16 年前

    好吧,有些想法。

    1. 您真的需要数据库中的周表吗?它有什么作用?它似乎是项表的值。它实际上不是一个实体,因此可能不需要单独的表IMO。

    2. 你说得对,这两张桌子里没有什么可加入的。如果项目表中有week_id,而不是number,那么这是有意义的,除了我在1中的注释

    3. 为什么每周只有3个项目?如果你真的想要,我建议你按项目表中的周数订购。您可以放弃代码中的其他值。在这种情况下使用ORDERBY子句。

    4. 或者,您可以循环访问周表中的所有值,对于每个值,使用周数从项目表中进行选择。您可以使用limit子句只返回3个项目。

        2
  •  1
  •   Richard Reddy    16 年前

    更改项目表以保存周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'