2017-10-05 71 views
0

我的左表的數據是「消息」完整的數據OG留下其他表,然後加入連接

id  advid  seller_id  purchase _id  delete_status 

15  93   28   19     yes 
22  134   34   19     yes 
25  168   15   19     No 
17  130   19   2     yes 
24  134   34   6     No 

我的右表中的數據是「DeleteMessage可以」

id addid  sessionid  messageid  
1  93   19   15 
2  134   34   22 
3  93   28   15 
4  130   19   17 

我正在插入ADVID,ID和活動人員(賣方/買方)在session中刪除表

現在我想要消息表中的數據,其銷售者/購買ID不作爲會話標識輸入到刪除表中

我使用左加入,但它不是從左表保存我的數據

我的查詢是

select * from message 
left join deletetable 
on message.id = deletetable.messageid 
where sessionid !='34' 
AND (purchase_id='34' OR seller_id='34') 

根據我的願望這個查詢應該給我留言表的條目沒有24但沒有什麼是顯示出來

+0

不,它是給我從左表的所有34條目 – ramii

回答

1
DROP TABLE IF EXISTS message; 

CREATE TABLE message 
(id INT NOT NULL PRIMARY KEY 
,seller_id INT NOT NULL 
,purchase_id INT NOT NULL 
); 

INSERT INTO message VALUES 
(15,28,19), 
(22,34,19), 
(25,15,19), 
(17,19,2), 
(24,34,6); 

DROP TABLE IF EXISTS deletemessage; 

CREATE TABLE deletemessage 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,sessionid INT NOT NULL 
,messageid INT NOT NULL 
); 

INSERT INTO deletemessage VALUES 
(1,19,15), 
(2,34,22), 
(3,28,15), 
(4,19,17); 

SELECT x.* 
    FROM message x 
    LEFT 
    JOIN deletemessage y 
    ON y.messageid = x.id 
    AND y.sessionid = 34 
WHERE 34 IN (x.seller_id,x.purchase_id) 
    AND y.id IS NULL; 
+----+-----------+-------------+ 
| id | seller_id | purchase_id | 
+----+-----------+-------------+ 
| 24 |  34 |   6 | 
+----+-----------+-------------+ 
+0

謝謝你是完美的 – ramii

0

希望我正確地讀你的問題,但是這看起來讓你要求的結果:

SELECT m.id, m.advid, m.seller_id, m.purchase_id, m.delete_status 
    FROM message m 
LEFT JOIN deletetable d ON m.id = d.messageid 
WHERE d.messageid IS NULL 
AND (purchase_id = '34' OR seller_id = '34') 

這將會從message沒有在​​3210的輸入,同時在seller_idpurchase_id是所有值使用上述從您的樣品「34」

結果:

| *id* | *advid* | *seller_id* | *purchase_id* | *delete_status* | 
+------+---------+-------------+---------------+-----------------+ 
| 24 | 134  | 34   | 6    | No    | 

注意:你已經用撇號包圍你的purchase_idseller_id,即'34',所以我認爲這是一個字符串字段而不是整數。如果它是一個Integer字段,則可以刪除它們 - 它們不是必需的,它會使查詢速度稍慢。

+0

我看不到會話ID在這裏 – Strawberry

相關問題