2017-03-07 26 views
1

該SQL工作正常,並且其中所述用戶是組選擇與所述第一條件[SQL]第三表

SELECT * 
FROM gchat 
LEFT JOIN codes ON (gchat.code = codes.code) 
WHERE codes.u_username = 'user1' 

我需要什麼來添加,我有一個部件只顯示在表Google即時通訊消息也表名(pchat)被認爲是用戶之間的私人聊天所以我也想顯示的郵件屬於在第一個SQL語句

表結構

Google即時通訊

的「USER1」
CREATE TABLE `gchat` (
    `id` int(11) NOT NULL, 
    `code` varchar(255) NOT NULL, 
    `fromuser` varchar(255) NOT NULL, 
    `text` text NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

pchat

CREATE TABLE `pchat` (
    `id` int(11) NOT NULL, 
    `fromuser` varchar(255) NOT NULL, 
    `touser` varchar(255) NOT NULL, 
    `text` text NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
+0

工作正常?那麼它就像一個普通的INNER JOIN一樣執行。如果您需要LEFT JOIN,請將codes.u_username條件從WHERE子句移動到ON子句。 – jarlh

+0

@jarlh我想添加pchat! – WonderX

+0

UNION ALL聊天和聊天。 – jarlh

回答

0
SELECT * FROM 
(
SELECT gchat.id,gchat.fromuser,gchat.text,gchat.date 
FROM gchat 
LEFT JOIN codes ON (gchat.code = codes.code) 
WHERE codes.u_username = 'user1' 
    UNION 
SELECT id,fromuser,text,date 
FROM pchat 
WHERE fromuser='user1' 
)Z 

在這裏,我已做了gchatpchat表兩種不同的投影和使用UNION來自兩個表合併所有記錄。對於特定用戶WHERE使用的條件,這將過濾掉整個記錄。

試試這個code.Hope這將幫助你。

+0

感謝,但pchat只爲Google即時通訊 – WonderX

+0

@AbdulazizM請出示pchat表的表結構沒有名爲列代碼。 –

+0

已更新在問題 – WonderX

相關問題