MySql从多个表中获取数据,结果来自一个select

MySql从多个表中获取数据,结果来自一个select,mysql,select,multi-table,Mysql,Select,Multi Table,我有一张这样的桌子“移动” ---------------------------------- | id | ... | ... | tab | idTab | ---------------------------------- | 1 | ... | ... | bike | 14 | | 2 | ... | ... | car | 57 | | 3 | ... | ... | car | 23 | | 4 | ... | ... | bike |

我有一张这样的桌子“移动”

----------------------------------
| id | ... | ... |  tab  | idTab |
----------------------------------
| 1  | ... | ... | bike  |  14   |
| 2  | ... | ... | car   |  57   |
| 3  | ... | ... | car   |  23   |
| 4  | ... | ... | bike  |  43   |
| 5  | ... | ... | boat  |  20   |
| .. | ... | ... | ...   | ....  |
----------------------------------
--------------------------------------------------------------
| id | ... | ... |  tab  | idTab | code | name  | matr | ... |
--------------------------------------------------------------
| 1  | ... | ... | bike  |  14   | AAA  | MARIO | 111  | ... |
| 2  | ... | ... | car   |  57   | 2A2  | FRANK | MSS  | ... |
| 3  | ... | ... | car   |  23   | 123  | JACK  | WER  | ... |
| 4  | ... | ... | bike  |  43   | A1C  | JOHN  | EEE  | ... |
| 5  | ... | ... | boat  |  20   | UJN  | PETER | WSX  | ... |
| .. | ... | ... | ...   | ....  | ...  | ....  | .... | ... |
--------------------------------------------------------------
“自行车”标签

标签“汽车”

标签“船”

我希望在单个查询中包含“move”的所有数据以及“move”中包含的每个表的数据,并使用特定的idTab

结果是这样的

----------------------------------
| id | ... | ... |  tab  | idTab |
----------------------------------
| 1  | ... | ... | bike  |  14   |
| 2  | ... | ... | car   |  57   |
| 3  | ... | ... | car   |  23   |
| 4  | ... | ... | bike  |  43   |
| 5  | ... | ... | boat  |  20   |
| .. | ... | ... | ...   | ....  |
----------------------------------
--------------------------------------------------------------
| id | ... | ... |  tab  | idTab | code | name  | matr | ... |
--------------------------------------------------------------
| 1  | ... | ... | bike  |  14   | AAA  | MARIO | 111  | ... |
| 2  | ... | ... | car   |  57   | 2A2  | FRANK | MSS  | ... |
| 3  | ... | ... | car   |  23   | 123  | JACK  | WER  | ... |
| 4  | ... | ... | bike  |  43   | A1C  | JOHN  | EEE  | ... |
| 5  | ... | ... | boat  |  20   | UJN  | PETER | WSX  | ... |
| .. | ... | ... | ...   | ....  | ...  | ....  | .... | ... |
--------------------------------------------------------------
我不知道实际上我是否有一个移动中的特定表。 我可以这样提问

SELECT * FROM move WHERE id>0 
然后是一个有

SELECT * FROM move["tab"] WHERE id=move["idTab"]
但是工作很辛苦,因为桌子移动很长

我试着用这个,但(显然)不起作用

SELECT M.*, T.* FROM move as M, M.tab as T WHERE M.id>0 AND M.idTab=T.id 

您的数据库设计并不理想,我认为您不应该为每种类型的车辆设置单独的表。也就是说,如果您使用
联合将三个表合并为一个表,那么单个连接可以产生您想要的结果

SELECT t1.*, t2.*
FROM move t1
INNER JOIN
(
    SELECT id, code, name, matr, 'bike' AS tab
    FROM bike
    UNION ALL
    SELECT id, code, name, matr, 'car'
    FROM car
    SELECT id, code, name, matr, 'boat'
    FROM boat
) t2
    ON t1.idTab = t2.id AND
       t1.tab   = t2.tab

我为表的类型添加了一个计算列,假设相同的
id
可能出现在多个车辆表中。

为什么不将所有公共列存储在一个表中table@Strawberry因为这样用户就不会有任何工作要做了,我们显然不希望这样:-)谢谢。。。我有更多的表格,其中包含更多的车辆信息,还有一个类似于将这些信息与一般信息连接起来的表格。@FrancescoG。。。你的问题是?这只是为了解释,因为我的数据库就是这样设计的。只是想知道,如果(例如)我没有在“移动”一个项目“船”,查询会工作吗?
Select 'bike' vehicle,column1,.... from bike
Union
Select 'boat',column1,... from boat
Union...
SELECT t1.*, t2.*
FROM move t1
INNER JOIN
(
    SELECT id, code, name, matr, 'bike' AS tab
    FROM bike
    UNION ALL
    SELECT id, code, name, matr, 'car'
    FROM car
    SELECT id, code, name, matr, 'boat'
    FROM boat
) t2
    ON t1.idTab = t2.id AND
       t1.tab   = t2.tab