大家好。我认为我的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))");

10-07 19:10
查看更多