MySql查询 - 从2个表中选择数据并替换字段的内容

时间:2013-11-16 15:27:14

标签: mysql

我正在尝试完成一个SQL查询,虽然我发现类似的问题已经解决,但我无法让我的工作。

我有两张桌子,订单和车(有更多的字段,但这些是我遇到的问题:

table_cars
------------------
身份证号

1辆蓝色车 2辆红色车 3辆绿色汽车

table_orders
-----------------
Vehicletype

2
2
1
3
1
2

所以我有以下代码,但我需要的是正确的内连接语法,用于将车辆类型的输出从车牌表中定义的ID替换为标题,所以不是说'2'而是说'红车'

以下是我对select查询的内容:

SELECT names, phone, cprice, vehicletype FROM table_orders 
WHERE driver_id = {$UserId}

结果已在driver_id上过滤。

提前感谢您的任何帮助:)

--------------------------续-------------------- ---------------------------

道歉,我确实得到了它的工作我错过了表名之后的's'。你看起来非常聪明,所以如果可以,我会问另一个问题。 这是我到目前为止的完整查询,我知道它是凌乱的!我将使用另外两个内部联接将相同的解决方案应用于“州”和“付款”字段(我可以有3个吗?)但我的问题是在UNIXTIME字段上。

数据在表中存储如1384380000所以我必须使用带有格式的UNIXTIME来获取数据以显示我想要的方式。我想要的是'datetime2'字段有时会是空的,所以我想它返回一个空白字段或零如果它是空的,因为它当前返回的日期和时间如01/01/70 01:00: 00。

SELECT s.names, s.phone, IF(s.returntrip=0, 'No', 'Yes'), s.cprice, s.prepay, s.selpassengers, tc.title AS Vehicle, s.selinfantseats, s.selchildseats, s.selboosterseats, s.selluggage, s.selcarry, s.PickupAddr1, s.PickupAddr4, FROM_UNIXTIME(datetime1,'%d/%m/%y %T'), FROM_UNIXTIME(datetime2,'%d/%m/%y %T'), s.message, s.begin, s.end, (CASE WHEN state = '1' THEN 'Accepted' WHEN state = '-2' THEN 'Waiting'  WHEN state = '-1' THEN 'Archived' WHEN state = '0' THEN 'Rejected' ELSE 'Unknown' END) AS Status, (CASE WHEN payment = '4' THEN 'Cash to Driver' WHEN payment = '5' THEN 'Credit/Debit  Card' WHEN payment = '6' THEN 'Credit/Debit Card to Driver' WHEN payment = '7' THEN 'Account'  ELSE 'Unknown' END) AS Payment, s.driver_id FROM #__taxibooking_orders s INNER JOIN #__taxibooking_cars tc ON tc.id = s.vehicletype WHERE s.driver_id = {$UserId}

非常感谢:)

1 个答案:

答案 0 :(得分:0)

SELECT s.names, s.phone, s.cprice, tc.title FROM table_orders s INNER JOIN table_cars tc ON tc.id = s.Vehicletype
WHERE s.driver_id = {$UserId}

我不确定它的最佳状态,但你可以试试:

IF(FROM_UNIXTIME(datetime2,'%Y') = '1970', NULL, FROM_UNIXTIME(datetime2, '%d/%m/%y %T'))