堆栈SQL查询错误和复杂性

时间:2012-08-30 10:31:47

标签: mysql sql sql-server phpmyadmin

我刚学会了你可以堆栈SQL查询而不是运行4个不同的查询并组合数据。所以我读了教程和东西,但仍然无法弄清楚这一点。

SELECT ID,
       (SELECT firstname
        FROM   user
        WHERE  ID = fundraiser.user_ID) AS firstname,
       (SELECT lastname
        FROM   user
        WHERE  ID = fundraiser.user_ID) AS lastname,
       (SELECT org_fund_id
        FROM   fundraiser
        WHERE  ID = fundraiser.ID)      AS org_fund_ID,
       (SELECT ref_ID
        FROM   fundraiser
        WHERE  ID = fundraiser.ID)      AS ref_ID
FROM   fundraiser
WHERE  1
ORDER  BY org_fund_ID ASC

这是被调用的数据库/表的基本设置: [筹款人] - (ID,ref_ID,user_ID,org_fund_ID)和 [用户] - (名字,姓氏)

基本上,我想从数据库中提取“筹款人”中的所有字段,但获取相应的“user.firstname”和“user.lastname”,其中“fundraiser.user_ID”=“user.ID”。

所以它会出现像这样的行: fundraiser.ID,fundraiser.user_ID,fundraiser.ref_ID,user.firstname,user.lastname

我尝试了30种不同的编写此查询的方式,但都失败了。我得到的错误是“#1242 - 子查询返回超过1行”。

我不确定如何向您提供更多信息,以便您可以看到我正在谈论的内容,但我会尽可能提供任何数据。

提前致谢。

1 个答案:

答案 0 :(得分:2)

选择所有列:

SELECT *
FROM   fundraiser f
       INNER JOIN user u
               ON u.ID = f.user_ID
ORDER  BY f.ord_fund_id ASC;

选择所需列:

SELECT 
    u.firstname,
    u.lastname,
    f.org_fund_id,
    f.ref_ID
FROM fundraiser f 
INNER JOIN user u ON u.ID = f.user_ID
ORDER BY f.ord_fund_id ASC;

这应该是,你需要什么。请参阅this Wikipedia page