SELECT 查询 TableA 和 TableB IF TableB.col 值 (0 OR 1) 我为 0 和 1 创建新列

SELECT query for TableA and TableB IF TableB.col value (0 OR 1) I create new columns for 0 and 1

我有一张Table图片

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');

及其他table商场

 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 并取决于 pictures.picture_islogo 的值(0:徽标,1:background 或其他)

我想查询 returns pictures.picture_path 取决于 pictures.picture_islogo(0:徽标,1:background 或其他)

我需要获取的数据 mall_id、mall_displaysname、mall_logo、mall_background、mall_description 和 mall_contact

其中mall_logo是条件的photo_path pictures.picture_islogo = 1

**mall_background**一样,但是 picture_islogo = 0 和 mall_logo_picture_id = picture_id

将附加条件放入连接条件中:

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

要进行左联接,附加条件必须在联接条件中,该条件在进行联接时进行评估。

如果将它们放在 where 子句中,它在连接完成后进行评估,则强制外连接成为内连接,因为连接必须成功才能满足额外条件。