gpt4 book ai didi

php - mysql中如何连接三个表?

转载 作者:行者123 更新时间:2023-11-29 08:30:04 24 4
gpt4 key购买 nike

我有下表。我需要将车辆详细信息与车辆选项连接起来。一辆车可能有多个选项,例如防盗、皮革内饰等。我尝试了左连接。但没有得到确切的结果。

My question : 有没有办法无论选项有一个还是多个都只获取一行?就是说选项需要获取数组或者什么的形式。

**vehicle_det**

vdId | Mileage | Transmission | IntColour | selCategory | price | selDriveTrain | Fuel
--------------------------------------------------------------------------------------


**vehicle_option_trans**

id | vehicleId | optionId
------------------------


**vehicle_options**

id | type
---------

查询架构 -

CREATE TABLE vehicle_det 
(
vdId int auto_increment primary key,
Mileage varchar(20),
Transmission varchar(30)
);

INSERT INTO vehicle_det
(Mileage, Transmission)
VALUES
('10', 'automatic'),
('12', 'automatic'),
('5', 'manual'),
('11', 'manual');


CREATE TABLE vehicle_option_trans
(
id int auto_increment primary key,
vehicleId varchar(20),
optionId varchar(30)
);

INSERT INTO vehicle_option_trans
(vehicleId, optionId)
VALUES
('1', '1'),
('1', '3'),
('1', '4'),
('2', '2');


CREATE TABLE vehicle_options
(
id int auto_increment primary key,
type varchar(20) );

INSERT INTO vehicle_options
(type)
VALUES
('Power Roof'),
('Sun Roof'),
('Heated Mirrors'),
('Alloy Wheels');

<强> SQLFIDDLE

提前致谢。

最佳答案

如果您只想返回每辆车的一行及其所有选项,则需要执行 GROUP_CONCAT() http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat 。这将返回一个逗号分隔的数组 -

SELECT
vehicle_det.*, GROUP_CONCAT(vehicle_options.type) as options
FROM
vehicle_det
LEFT JOIN
vehicle_option_trans
ON
vehicle_det.vdId = vehicle_option_trans.vehicleId
LEFT JOIN
vehicle_options
ON
vehicle_options.id = vehicle_option_trans.optionId
GROUP BY vehicle_det.vdId

使用您的 sqlfiddle 数据,这将返回

enter image description here

看到这个sqlfiddle - http://sqlfiddle.com/#!2/290c4a/9

关于php - mysql中如何连接三个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16889879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com