【发布时间】:2011-07-07 20:33:41
【问题描述】:
大家好。我认为我的 qry 中有逻辑错误。输出是正确的,但是是三元组。我已经盯着这个很久了,没有看到它。有人可以对此有所了解吗?谢谢!!
也想添加此信息。
- $userid = 1
- $UserIDAList = (1,1,6)
- $UserIDBList = (2,3,1)
PHP-代码:
$result = mysql_query("SELECT TBL_ContactsList.ContactID, TBL_ContactName.FirstName FROM TBL_ContactsList, TBL_ContactName WHERE ((TBL_ContactName.NameID != $userid) AND (TBL_ContactsList.ContactID != $userid)) AND ((TBL_ContactName.NameID IN ($UserIDAList) OR TBL_ContactName.NameID IN $UserIDBList)))");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]);
echo "<br/>";
}
只有 SQL 查询(可读性):
SELECT TBL_ContactsList.ContactID, TBL_ContactName.FirstName
FROM TBL_ContactsList, TBL_ContactName
WHERE ((TBL_ContactName.NameID != $userid) AND (TBL_ContactsList.ContactID != $userid))
AND ((TBL_ContactName.NameID IN ($UserIDAList) OR TBL_ContactName.NameID IN $UserIDBList)))
输出:
ID: 2 Name: Joe
ID: 3 Name: Joe
ID: 4 Name: Joe
ID: 2 Name: Jimbo
ID: 3 Name: Jimbo
ID: 4 Name: Jimbo
ID: 2 Name: Mike
ID: 3 Name: Mike
编辑:这是我最终使用的。 (这里不知道缩进。)
但是现在我缺少数据库中的一个条目。
$result = mysql_query("
输出如下所示。
SELECT cl.ContactID, cn.FirstName
FROM TBL_ContactName AS cn
INNER JOIN TBL_ContactsList AS cl
ON cl.ContactID = cn.NameID
WHERE
cn.NameID != $userid
AND (
cn.NameID IN ($UserIDBList) OR cn.NameID IN ($UserIDAList)
)
");
ID:2 姓名:Joe
ID:3 姓名:Jimbo
但是当我输入 LEFT JOIN 时,我得到了这个。关闭但仍然缺少 ID。
ID:2 姓名:Joe
ID:3 姓名:Jimbo
ID:姓名:Mike
有什么想法吗??谢谢!
【问题讨论】:
-
您应该尝试使用 LEFT 或 RIGHT 连接,而不是
FROM TBL_ContactsList, TBL_ContactName,具体取决于您的表结构 -
嘿约翰普,你是对的。在所有 cmets 中,我缺少的是 JOIN ON。谢谢!
-
谢谢大家!我选择了@Arda 和@dnl 的答案。但是现在我在查询中缺少一个条目。经过一些实验,使用 LEFT JOIN 几乎可以了,只是它缺少 ID。到目前为止,我使用代码和输出编辑了有关问题。
-
缩进并不难。按空格键。
-
好的,我发现了我的问题。最后,我不得不制作两个 qry,一个用于 UserIDA 和 UserIDB。但是 JOIN 中的所有帮助使它成为可能。谢谢!
标签: php mysql select join where