我有桌面文件,他们有分数/分数。我试图总结这些点并打印出来。我有一个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的分数。希望它有所帮助。
答案 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选项卡查询框上运行查询。您可以尝试使用此方法检查查询是否有效。
答案 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并开始实现它。