2015-04-05 44 views
1

我有一個表圖片爲表A和表B IF TableB.col值SELECT查詢(0或1)I 0創建新列和1

create table pictures (
    picture_id int(10) unsigned NOT NULL AUTO_INCREMENT, 
    mall_id float NOT NULL, 
    shop_id float NOT NULL, 
    picture_islogo int(11) NOT NULL , 
    picture_path varchar(255) NOT NULL, 
    PRIMARY KEY (picture_id) 
) ; 

樣本數據留念

INSERT INTO pictures VALUES 
(1, -1, 1, 1, 'photo.jpg'), 
(2, -1, 2, 1, 'photo.jpg'), 
(3, -1, 3, 1, 'photo.jpg'), 
(4, -1, 4, 1, 'photo.jpg'), 
(5, -1, 5, 1, 'photo.jpg'), 
(6, -1, 6, 1, 'photo.jpg'), 
(7, -1, 7, 1, 'photo.jpg'), 
(8, -1, 8, 1, 'photo.jpg'), 
(9, -1, 9, 1, 'photo.jpg'), 
(10, -1, 10, 1, 'photo.jpg'), 
(11, -1, 11, 1, 'photo.jpg'), 
(12, -1, 12, 1, 'photo.jpg'), 
(13, -1, 13, 1, 'photo.jpg'), 
(14, -1, 13, 0, 'photo.jpg'); 

和其他表商場

create table malls (
    mall_id float NOT NULL AUTO_INCREMENT, 
    user_id float NOT NULL, 
    mall_displaysname varchar(255) NOT NULL, 
    mall_description text NOT NULL, 
    mall_contact varchar(14) NOT NULL, 
    mall_logo_picture_id int(11) NOT NULL, 
    mall_background_picture_id int(11) NOT NULL, 
    PRIMARY KEY (mall_id) 
); 

個樣本數據爲商場

INSERT INTO malls VALUES 
    (1, 2, 'mall', 'description', '+60 12 3456789', 14, 36), 
    (2, 5, 'mall 2', 'description', '+60 12 3456789', 15, 37), 
    (3, 6, 'mall 3', 'description ', '+60 12 3456789', 16, 38), 
    (4, 13, 'Multimedia University', 'description ', '+60 12 3456789', 17, 39), 
    (5, 18, 'Setia Walk', 'description ', '+60 12 3456789', 18, 40), 
    (6, 20, 'Ampang Point', 'description ', '+60 12 3456789', 19, 41), 
    (7, 21, 'Alamanda Plaza', 'description ', '+60 12 3456789', 20, 42), 
    (8, 22, 'Subang Parade', 'description ', '+60 12 3456789', 21, 43), 
    (9, 26, 'مجمع العرب - جدة', 'description ', '+60 12 3456789', 22, 44); 

mall_background_picture_idmall_background_picture_id參考picturespicture_id並取決於值picturespicture_islogo(0:標識,1:背景或其他)

我想要一個查詢返回picturespicture_path取決於價值picturespicture_islogo(0:標誌,1:背景或其他)

,我需要得到 mall_id,mall_displaysname,mall_logo,mall_background,mall_description數據,並mall_contact

mall_logophoto_path的條件 picturespicture_islogo = 1

和同樣的事情**mall_background**picture_islogo = 0 和 mall_logo_picture_id = picture_id

+0

「mall_background_picture_id」和「mall_logo_picture_id」可能爲空嗎? – Bohemian 2015-04-05 08:33:21

+0

您能否提供一些樣品數據和預期結果? – 2015-04-05 08:35:18

+0

我已經添加了一個示例數據 – ahmadssb 2015-04-05 08:53:08

回答

1

把額外的條件設定爲加入條件:

select * -- you can chose what columns you want 
from malls m 
left join pictures pl on m.mall_logo_picture_id = pl.picture_id 
    and pl.picture_isLogo = 1 
left join pictures pb on m.mall_background_picture_id = pb.picture_id 
    and pb.picture_isLogo = 0 

Ť o已經離開連接,額外的條件必須處於連接狀態,這會在連接正在進行時評估。

如果您將它們放在where子句中,在進行聯接後進行評估,您強制外部聯接成爲內部聯接,因爲聯接必須成功才能使額外的條件成爲true。

+0

謝謝你的作品,但現在我有圖片表上的列重複兩次(一個是islogo = 0,另一個是picture_islogo = 1),所以現在我有列picture_path兩次徽標和其他爲背景 我不需要任何圖片表除了picture_path(並重命名它的標誌和背景) 再次感謝您 – ahmadssb 2015-04-05 09:03:34

+1

在SELECT中找到它我指定pl.picture_path AS logo,pb.picture_path AS背景。非常感謝你 – ahmadssb 2015-04-05 09:18:39

相關問題