【问题标题】:Store array in sql query在sql查询中存储数组
【发布时间】:2011-03-16 18:28:16
【问题描述】:

我的问题标题可能无法真正描述我的问题,对此感到抱歉。我正在进行数据库模块。因此,我的 sql 查询必须很复杂,并且能够在单个查询

中完成

我有两张桌子,一张是category

  • catid int
  • catname varchar

另一个表是product

  • productid int
  • catid 引用类别(catid)
  • 产品名称

现在我想做一个选择语句,选择猫名+该猫下的产品数组,是否可以在单个查询中执行此操作,例如

SELECT a.catname,(b.productname bla bla in an array)
from category a, product b WHERE a.catid=b.catid

我不知道这是否可能,如果可以,请帮助我

【问题讨论】:

  • 什么关系型数据库?每个解决方案都不同,因为没有 ANSI SQL 标准方式

标签: sql


【解决方案1】:

MySQL - 使用GROUP_CONCAT

SELECT a.catname, group_concat(b.productname) productnames
from category a
inner join product b on a.catid=b.catid
group by a.catname

【讨论】:

    【解决方案2】:

    查找 Inner Join 关键字,

    http://www.w3schools.com/sql/sql_join_inner.asp

    这应该正是你所需要的

    SELECT column_name(s)
    FROM table_name1
    INNER JOIN table_name2
    ON table_name1.column_name=table_name2.column_name
    

    【讨论】:

    • 谢谢,但是如果我使用 join,结果是水果,苹果;水果,梨;但实际上我想要的是像水果一样的结果,[苹果,梨]
    【解决方案3】:

    这取决于您的数据库平台以及您使用此查询结果的位置。可以使用 Oracle SQL 以及 XML 对象等创建表列,但这取决于您如何使用另一端的数据。

    如果您使用编程语言处理此问题,则 JOIN 方法可能是最好和最简单的方法,您可以在程序中以编程方式加载数据结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多