我有兩個MySQL表'sections'和'pages'。返回第一個表數據,不管第二個表是否返回數據,操作符連接規範化
我想我們單個查詢來從一個或兩個表中獲取數據。
如果該部分和頁面存在,AND運算符正常工作。
如果該部分和頁面不存在,那麼AND運算符也不錯。
但是,我似乎無法找到一種方法來拉動節表,如果頁面不存在(AND運算符問題)與index.php網址(拉該網站的所有index.php頁面)相結合。
我試圖所以這裏寫出更好的查詢是我的目標,我曾嘗試...
我不想把所有匹配部分,然後遍歷它們的頁面。
我不想在執行第二個查詢時浪費資源,如果這可以在單個查詢中完成。
我目前有兩個如果條件化查詢(只有一個將執行給定的頁面加載),因爲'index.php'網址的頁面將拉取所有部分。
我已經使用FROM與節表一起使用,儘管我也嘗試過在頁表上使用LEFT JOIN。
這適用於不在索引的網頁...
(SELECT NULL AS meta_description FROM sections WHERE url = 'example')
UNION
(SELECT meta_description FROM pages WHERE url = 'something');
該查詢返回最多兩行是很容易的工作。
科以及頁面存在,返回結果...
SELECT *
FROM sections AS cs
LEFT JOIN pages AS cp ON (cp.id_section = cs.id)
WHERE cs.section_url LIKE BINARY 'section_url' AND cp.url LIKE BINARY 'index.php'
部分存在,頁面沒有,返回0行...
SELECT *
FROM sections AS cs
LEFT JOIN pages AS cp ON (cp.id_section = cs.id)
WHERE cs.section_url LIKE BINARY 'section_url' AND cp.url LIKE BINARY 'not_exist'
表結構...
頁:ID,SECTION_ID,meta_description,meta_language,meta_robots,標題,URL
部分:ID,SECTION_ID,meta_description,meta_language,meta_robots,標題,URL
最重要的是我要確保該語法是SQL中性的,因爲我打算最終從MySQL遷移到PostgreSQL。
我很樂意補充說明。如果有人能夠提出工作答案,我會同意並投票給它。
你能後你有和不工作的查詢? – 2012-01-15 23:08:05
我很困惑。有些事情可能有助於澄清你所問的問題:(1)發佈表格定義; (2)發佈你提及的使用'AND'的查詢; (3)張貼您提到的使用'LEFT JOIN'的提問。 – ruakh 2012-01-15 23:09:24
好吧編輯帖子... – John 2012-01-15 23:11:39