1
我需要一些關於我試圖設置的MySQL查詢的幫助。我需要找到符合條件的記錄,這些條件位於兩個不同的表格中,具有多對多的關係。需要關於MySQL搜索查詢的幫助
我在這個查詢中使用三個表格,第一個包含項目,第二個包含主題,第三個包含主題,第三個將它們連接在一起。我希望查詢找到與用戶選擇的主題相關的項目。用戶也可以選擇多個主題來執行搜索。在這種情況下,我只想顯示與這兩個主題相關的項目,而不是其中任何一個。這是我無法弄清楚如何去做的。我期望我不得不做這樣的事情,但是這個查詢不會產生任何結果,同時有一個項目鏈接到數據庫中的兩個主題。
SELECT `projects`.*
FROM `projects`, `topics`, `projects_topics`
WHERE (`name` LIKE '%%' || `vision` LIKE '%%' || `highlights` LIKE '%%' || `optional` LIKE '%%')
&& ((`projects_topics`.`projects_id` = `projects`.`id` && `projects_topics`.`topics_id` = `topics`.`id` && `topics`.`id` = '1')
&& (`projects_topics`.`projects_id` = `projects`.`id` && `projects_topics`.`topics_id` = `topics`.`id` && `topics`.`id` = '9'))
ORDER BY `date_added` DESC
這些都是表:
項目
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| fields_id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
| zip | varchar(255) | YES | | NULL | |
| city | varchar(255) | YES | | NULL | |
| state | varchar(255) | YES | | NULL | |
| countries_id | int(11) | NO | PRI | NULL | |
| website | varchar(255) | YES | | NULL | |
| client | varchar(255) | YES | | NULL | |
| finished | date | YES | | NULL | |
| budget | int(11) | YES | | NULL | |
| vision | text | YES | | NULL | |
| highlights | text | YES | | NULL | |
| innovation | text | YES | | NULL | |
| optional | text | YES | | NULL | |
| publish | tinyint(1) | YES | | NULL | |
| date | datetime | YES | | NULL | |
| featured | tinyint(1) | YES | | NULL | |
| frontpage | tinyint(1) | YES | | NULL | |
| date_added | datetime | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
主題
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| topic | varchar(255) | YES | | NULL | |
| order | int(11) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
個
projects_topics
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| projects_id | int(11) | NO | PRI | NULL | |
| topics_id | int(11) | NO | PRI | NULL | |
+-------------+---------+------+-----+---------+-------+
讓我看看我是否理解正確。例如,如果用戶只選擇1個主題,則需要將OFFSET設置爲0.如果他們選擇2個主題,則需要將OFFSET設置爲1.如果選擇了3個主題,則需要將其設置爲2,依此類推。正確? – Abel 2010-02-26 14:11:25
@Abel:正好。 – Quassnoi 2010-02-26 14:52:54