![](/img/trans.png)
[英]mySQL how to make one field in table dependant on if some other field has a value?
[英]mysql how to show some rows of table depending on one field and depending on one field in other table?
我有一個腳本,其中的成員按表中的目錄登錄並按類別讀取日志,然后單擊按鈕,然后將一個條目插入表中稱為postsread的日志中,收集該日志的名稱,成員ID和顯示已被讀取的日期被他們。 我正在尋找的查詢將僅向他們顯示他們尚未閱讀的帖子。
**Tables** **Fields** posts id, name, date, from, topic, info, cat postsread id, postname, memberid, date users id, memberid, pass, fname, lname, email
會話已經持有他們的$ _SESSION ['memberid'],但是不確定如何在兩個表之間進行查詢以獲取所需的內容。 就像這樣:顯示帖子中的所有帖子,但Postsread中的帖子除外,並在相應的帖子名稱旁邊添加成員memberid。 我正在使用php版本5.3和mysql 5.0.96。
我正在使用以下內容來顯示數據庫中的帖子:
$sql=mysql_query("SELECT * FROM posts WHERE cat='1' ORDER BY date DESC");
但這並不能區分成員是否單擊以表明他們是否看到了它們。
我看過很多地方,看到了一些接近的示例,但都找不到適合我需要的示例。 我不完全了解該如何寫。 我嘗試了許多但沒有成功。 如果您需要其他說明,請詢問。 感謝您的時間。
您需要針對posts_read
表構造一個JOIN
條件,或使用IN
子句將其排除。 您應該非常小心地使用索引,因為這類查詢可能會變得非常緩慢,並且會占用大量的數據,從而占用大量數據庫資源。
SELECT * FROM posts WHERE cat=:cat AND name NOT IN (SELECT postname FROM postsread WHERE memberid=:memberid)
:cat
和:memberid
是適當值的占位符。 使用PDO,您可以直接綁定到使用execute
函數的對象。
注意,在字符串上的連接要比在id
類型值上的連接慢很多。 您可能希望改為使posts
postsread
表引用id
。
sql=mysql_query("SELECT * FROM posts WHERE cat='1' AND name NOT IN (SELECT postname FROM postsread WHERE memberid='$memberid') ORDER BY date DESC") or die (mysql_error());
塔德曼答對了。 我在代碼中有一些本不應該存在的東西,但是找不到它。 最終,我只是改寫了東西,然后它起作用了。 以上為我工作,感謝塔德曼的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.