MySQL - 如何在一个查询中选择多个列?

时间:2011-05-08 12:40:38

标签: mysql database select

我正在为宾果卡计划创建一个数据库。我有2张桌子。一个是'card_cd':

card_cd:

NAME  | TYPE
id_cd | int
col1_id_cd | int
col2_id_cd | int
col3_id_cd | int
col4_id_cd | int
col5_id_cd | int

另一个是'card_column_cl':

card_column_cl

NAME  | TYPE
id_cl | int
order_cl | int
n1_cl | int
n2_cl | int
n3_cl | int
n4_cl | int

宾果卡由5列组成,每列4个(共20个数字),宇宙为40.只有1-8号应该在第一列,9-16到第二列,依此类推。我做的是我生成所有可能的列组合;因此,如果8个数字取4,则每列有70种可能的组合。我们有5列,因此有350个不同的列。这些列保存在'card_column_cl'表中。在'card_cd'中,我只保存了每列的列ID(id_cl)(以避免冗余和太多数据)。我现在的问题是如何查询包含列中所有数字的SELECT语句,如下所示:


NAME   |   VALUE
id_cd    | 123456
col1.n1_cl  |  1
col1.n2_cl  |  2
col1.n3_cl  |  3
col1.n4_cl  |  4

col2.n1_cl  |  9
col2.n2_cl  |  10
col2.n3_cl  |  11
col2.n4_cl  |  12

col3.n1_cl  |  17
col3.n2_cl  |  18
col3.n3_cl  |  19
col3.n4_cl  |  20

col4.n1_cl  |  25
col4.n2_cl  |  26
col4.n3_cl  |  27
col4.n4_cl  |  28

col5.n1_cl  |  33
col5.n2_cl  |  34
col5.n3_cl  |  35
col5.n4_cl  |  36

我不知道如何编写查询字符串。请帮我。非常感谢:D

1 个答案:

答案 0 :(得分:1)

获得该结果的唯一方法是使用以下方法:

SELECT *
FROM card_cd
INNER JOIN card_column_cl AS col1 ON (col1.id_cl = card_cd.col1_id_cd)
INNER JOIN card_column_cl AS col2 ON (col2.id_cl = card_cd.col2_id_cd)
INNER JOIN card_column_cl AS col3 ON (col3.id_cl = card_cd.col3_id_cd)
INNER JOIN card_column_cl AS col4 ON (col4.id_cl = card_cd.col4_id_cd)
INNER JOIN card_column_cl AS col5 ON (col5.id_cl = card_cd.col5_id_cd)