来自表的SUM点

时间:2014-04-20 07:44:34

标签: php mysql sql

我有桌面文件,他们有分数/分数。我试图总结这些点并打印出来。我有一个id文件的where子句,但如果我选择随机文件,它的分数与where子句无效的其他文件相同。

$ id对每个文件都是正确的。

这是我的疑问:

$result = mysql_query("SELECT *,SUM(body) FROM soubory, users, hodnoti WHERE
soubory.id='".$id."' AND soubory.users_id = users.id");

hodnoti table

users_ID  soubory_id  body
  14        44         7 
  15        44         9

现在,如果soubory_id = 45没有记录(在表hodnoti中),结果与44相同,尽管有where子句。

用户表

id   nick
14   user1
15   user2

soubory table

id   nazev  users_id
44   file1  14
45   file2  14

该查询应该可以帮我打印出来:

谁上传了,nazev(标题)的文件然后点。但是如果file2在表hodnoti中没有记录,则仍然有file1的分数。希望它有所帮助。

2 个答案:

答案 0 :(得分:3)

$sql = "SELECT *, SUM(hodnoti.body) as sum FROM soubory 
    INNER JOIN users ON soubory.users_id = users.id
    INNER JOIN hodnoti ON soubory.id = hodnoti.soubory_id
    WHERE soubory.id='".$id."' ";

$ result = mysql_query($ sql);

此查询适用于我。当我设置id = 44并获得结果并且设置id = 45并获得所有空值。我附上了两张结果图片。我刚刚创建表并插入您的给定数据并在phpmyadmin sql选项卡查询框上运行查询。您可以尝试使用此方法检查查询是否有效。

enter image description here enter image description here

答案 1 :(得分:1)

使用JOIN

$sql = "SELECT *, SUM(hodnoti.body) as sum FROM soubory 
        INNER JOIN users ON soubory.users_id = users.id
        INNER JOIN hodnoti ON soubory.id = hodnoti.soubory_id
        WHERE soubory.id='".$id."' ";

$result = mysql_query($sql);


建议:以上是您问题的直接答案。避免使用mysql_ *语句,因为它们现在已被弃用。学习mysqli_ *或PDO并开始实现它。