大家好。我认为我的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
第3章蓝星公主vs星际奸商
但是当我把LEFT JOIN放进去时,我得到了。关闭但仍缺少ID。
ID:2名:Joe
第3章蓝星公主vs星际奸商
ID:姓名:Mike
有任何想法吗??谢谢!
最佳答案
如果我正确地获得了您的SQL结构,则像这样更改SQL应该可以解决它。至少这是一种正确的用法。
$result=mysql_query("SELECT cl.ContactID, cn.FirstName FROM TBL_ContactsList cl INNER JOIN TBL_ContactName cn ON cn.NameID=cl.ContactID WHERE cn.NameID != $userid AND (CN.NameID IN ($UserIDAList) OR CL.NameID IN ($UserIDBList))");