-1

我在使用多个子查询时遇到了一些问题,

有这样的事情吗?

我目前的查询:

SELECT A.category_one as cat1, B.category_two as cat2, C.category_three as cat3
FROM table1
(SELECT name FROM table1 WHERE user_id ='32') A
(SELECT age FROM table1 WHERE age='12') B
(SELECT gender FROM table1 WHERE user_id ='32') C
WHERE ticket_id='12'

因此,如果我使用 PHP 获取结果,我可以回显数据,例如

foreach ($result as $value) {
   echo $value['cat1'] . ' ' . $value['cat2'] . ' ' . $value['cat3'] . "<br>";
}

查询是否正确?如果不是,那么正确的做法是什么?

任何帮助,将不胜感激。:)

4

2 回答 2

0

需要一个小的改进

(SELECT name FROM table1 WHERE user_id ='32') A
(SELECT gender FROM table1 WHERE user_id ='32') C

(SELECT name,gender FROM table1 WHERE user_id='32')A 

因为 A 和 C 的 where 子句是相同的,并确保将 'C.category_three as cat3' 放回 'A.category_three as cat3'

于 2013-06-28T01:29:07.623 回答
0

SQL和问题在以下方面没有很好地形成:

1) SQL 中存在语法错误(例如,子查询之间缺少逗号)。你应该首先修复这些(例如在 SQLFiddle 上),除非你完全坚持这样做。由于查询非常简单,这应该不是问题

2)你还没有提供任何加入信息。如果没有,您将获得这些查询结果的叉积。如果它们每个都恰好返回一行,那没关系,因为您将获得正好一行的输出。但是,由于您在for循环中暗示您希望返回多行,因此情况可能并非如此。如果您不熟悉 JOINing 的概念,您可能应该在继续之前了解它。

3)正如其他人指出的那样,您没有提供任何输入数据和输出结果的样本。这总是一个好主意,并且鉴于缺乏清晰的英文描述,就像这里的情况一样,绝对必要。

于 2013-06-28T01:37:43.143 回答