我正在尝试完成一个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}
非常感谢:)
答案 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'))