0
我有我需要加入加入從一個兩個表的數據顯示,如果有任何
fields_data fields
+------------+-----------+------+ +------+-------------+----------+
| relationid | fieldname | data | | name | displayname | position |
+------------+-----------+------+ +------+-------------+----------+
| 2 | ftp | test | | user | Username | top |
| 2 | other | 1234 | | pass | Password | top |
+------------+-----------+------+ | ftp | FTP | top |
| log | Log | top |
| txt | Text | mid |
+------+-------------+----------+
我想從「域」表中獲取所有的行,如果他們有位置這兩個表「top」,如果一行與fields_data中的name = fieldname匹配,它也應該顯示數據。這是我加入
SELECT
fd.`data`,
fd.`relationid`,
fd.`fieldname`,
f.`name`,
f.`displayname`
FROM `fields` AS f
LEFT OUTER JOIN `fields_data` AS fd
ON fd.`fieldname` = f.`name`
WHERE f.`position`='top' AND (fd.`relationid`='3' OR fd.`relationid` IS NULL)
我的問題是,上面的查詢只給了我這樣的結果:
+------+------------+-----------+------+-------------+
| data | relationid | fieldname | name | displayname |
+------+------------+-----------+------+-------------+
| NULL | NULL | NULL | user | Username |
| NULL | NULL | NULL | pass | Password |
| NULL | NULL | NULL | log | Log |
+------+------------+-----------+------+-------------+
稱爲「FTP」的字段缺少,由於其關係到「2」。 。但是我仍然想把它顯示爲結果,但像其他的NULL一樣。如果SQL查詢的「fd。relationid
='2'」而不是3,它會得到相同的結果,但是包含名稱爲ftp的行在三個字段中保存數據。
我希望你明白我的意思。我的英語不是最好的..繼承人的結果,我想:
with above query containing fd.`relationid`='3'
+------+------------+-----------+------+-------------+
| data | relationid | fieldname | name | displayname |
+------+------------+-----------+------+-------------+
| NULL | NULL | NULL | user | Username |
| NULL | NULL | NULL | pass | Password |
| NULL | NULL | NULL | ftp | FTP |
| NULL | NULL | NULL | log | Log |
+------+------------+-----------+------+-------------+
with above query containing fd.`relationid`='2'
+------+------------+-----------+------+-------------+
| data | relationid | fieldname | name | displayname |
+------+------------+-----------+------+-------------+
| NULL | NULL | NULL | user | Username |
| NULL | NULL | NULL | pass | Password |
| test | 2 | ftp | ftp | FTP |
| NULL | NULL | NULL | log | Log |
+------+------------+-----------+------+-------------+
不能看到這將如何帶來ftp記錄... – apomene 2014-09-25 12:44:46
@apomene。 。 。我認爲OP意味着'fields'中的FTP記錄不在'fields_data'中。我的答案中的兩個查詢都會返回位置爲'top''的'fields'中的所有行。 OP查詢過濾出特定的記錄。 – 2014-09-25 12:46:45