0

Ok, I have this code, I dont have error.... i have just nothing.... nothing apears:

$idea = $bdd->query("SELECT * FROM ideas 
INNER JOIN follow ON ideas.idcreador=follow.idseguidor 
WHERE follow.idseguidor ='".$_SESSION['userid']."' ORDER BY id DESC");

while($datoideaperfil2 = $idea->fetch())
{
  echo $datoideaperfil2['ideas.idcreador'] <br />;
}

What is wrong? Help me please its my fist time with SQL Joins...

Thanks

4

3 回答 3

1

There doesn't appear to be anything wrong with the SQL itself, but one thing that I do suspect is that you have a column called id in both tables. If you don't use an alias, then mysql won't know what to order by and return an error.

Try this:

SELECT 
    * 
FROM 
    ideas 
        INNER JOIN follow 
            ON ideas.idcreador=follow.idseguidor 
WHERE 
    follow.idseguidor ='".$_SESSION['userid']."' 
ORDER BY    
    follow.id DESC
于 2013-09-01T07:20:11.510 回答
1

要了解查询出了什么问题,您需要了解 SQL 中的连接是如何工作的。JOIN 会生成一个“表”,其中对于表 A 中的每一行,您都会得到一个与表 B 中的每一行组合的结果行。因此,如果表 A 有 5 行,而表 B 有 10 行,则得到 50 ( 5x10) 行,您需要使用 WHERE 子句对其进行过滤。

结果也不同,在您的情况下,这是重要的部分,无论您选择 INNER JOIN 还是 OUTER JOIN。INNER JOIN 的结果“表”仅包含表 A 和表 B 中的行与 ON 子句匹配的行。因此,如果您在表创意中有一行,与表中的任何行都没有关系,则它不会显示在结果中。您会选择 OUTER JOIN(LEFT 或 RIGHT OUTER JOIN)吗?任何不匹配的行都会显示出来,但是对于找不到关系的任何值,该行的值将设置为 NULL。

由于您选择了 INNER JOIN,但没有得到任何结果,我猜您在任何行之间都没有关系。

同样重要的是您指定您希望 ORDER BY 子句按哪个表排序,否则您会得到一个模棱两可的列异常(如果两个表都有一个名为 id 的列)。

于 2013-09-01T07:48:24.053 回答
0

you have used a INNER JOIN which will only display data if both tables have corresponding rows. Try using a LEFT or RIGHT join.

于 2013-09-01T07:19:27.247 回答