MySQL将同一行中不同列上的两个表连接起来
我将连接两个目标相同但原点值不同的表。我肯定我不擅长用语言解释。但希望您能通过下面的代码得到我想要的: MySQL 时间表船 选项\u位置\u数据库 根据时间表和船表。我期望:MySQL将同一行中不同列上的两个表连接起来,mysql,inner-join,between,Mysql,Inner Join,Between,我将连接两个目标相同但原点值不同的表。我肯定我不擅长用语言解释。但希望您能通过下面的代码得到我想要的: MySQL 时间表船 选项\u位置\u数据库 根据时间表和船表。我期望: from_en to_en time1 time2 price_adult price_child Aonang Phi Phi 09:00 11:00 450 350 Phi Phi Aonang 15:30 17:00
from_en to_en time1 time2 price_adult price_child
Aonang Phi Phi 09:00 11:00 450 350
Phi Phi Aonang 15:30 17:00 450 350
但从运行mySQL开始,它变成了这样:
“to_en”列与时间表不匹配。des=选项\u位置\u db=3。我试图添加更多的内部联接行,但出现了相同目标表名的错误。试试这个
SELECT
org_places.plc_en AS from_en,
des_places.plc_en AS to_en,
CONCAT( time_start_hr, ':', time_start_min ) AS time1,
CONCAT( time_end_hr, ':', time_end_min ) AS time2,
price_adult,
price_child
FROM `time_table_boat`
INNER JOIN
option_places_db AS org_places ON time_table_boat.org = org_places.plc_id
INNER JOIN
option_places_db AS des_places ON time_table_boat.des = des_places.plc_id
ORDER BY time_table_boat.org ASC
试试这个
SELECT
org_places.plc_en AS from_en,
des_places.plc_en AS to_en,
CONCAT( time_start_hr, ':', time_start_min ) AS time1,
CONCAT( time_end_hr, ':', time_end_min ) AS time2,
price_adult,
price_child
FROM `time_table_boat`
INNER JOIN
option_places_db AS org_places ON time_table_boat.org = org_places.plc_id
INNER JOIN
option_places_db AS des_places ON time_table_boat.des = des_places.plc_id
ORDER BY time_table_boat.org ASC
试试这个:
SELECT
placeOrg.plc_en AS from_en,
placeDes.plc_th AS to_en,
concat( time_start_hr, ':', time_start_min ) AS time1,
concat( time_end_hr, ':', time_end_min ) AS time2,
price_adult,
price_child
FROM `time_table_boat`
INNER JOIN option_places_db AS placeOrg ON time_table_boat.org = placeOrg.plc_id
INNER JOIN option_places_db AS placeDes ON time_table_boat.des= placeDes.plc_id
ORDER BY time_table_boat.org ASC
您需要从表选项\u places\u db中获得两个不同的名称,因此需要将其联接两次。第一次检索源名称,第二次检索目标名称。
您可以看到,您使用相同的表作为起点和终点,您只需将它们链接两次,并给它一个临时名称以区分您得到的响应
编辑:已更正查询请尝试以下操作:
SELECT
placeOrg.plc_en AS from_en,
placeDes.plc_th AS to_en,
concat( time_start_hr, ':', time_start_min ) AS time1,
concat( time_end_hr, ':', time_end_min ) AS time2,
price_adult,
price_child
FROM `time_table_boat`
INNER JOIN option_places_db AS placeOrg ON time_table_boat.org = placeOrg.plc_id
INNER JOIN option_places_db AS placeDes ON time_table_boat.des= placeDes.plc_id
ORDER BY time_table_boat.org ASC
您需要从表选项\u places\u db中获得两个不同的名称,因此需要将其联接两次。第一次检索源名称,第二次检索目标名称。
您可以看到,您使用相同的表作为起点和终点,您只需将它们链接两次,并给它一个临时名称以区分您得到的响应
编辑:更正了查询是否需要创建另一个名为“des_places”的表?否,您只需为选项_places_db指定不同的别名即可。其中一个用于原点,另一个用于目标。是否需要创建另一个名为“des_places”的表?不,您只需为选项_places_db指定不同的别名。其中一个用于来源,另一个用于目的地。您的解决方案似乎有效,但1054-未知列“time\u table\u boat.dest”在“on”子句中“谢谢。是的,您是对的,抱歉,已写入。目的地在检查您选择的名称之前,忘记了t。接得好!您的解决方案似乎有效,但1054-未知列“time\u table\u boat.dest”在“on子句”中表示感谢。是的,您是对的,抱歉,已经写了。在检查您选择的名称之前,目的地忘记了t。接得好!