以下SQL有效,但如果某行'str' object is not callable
为transfers.driver
,则不会选择该行。为NULL
添加值后,将选择该行。即使driver
为driver
,我该如何选择行?
NULL
这是表格的结构:
SELECT
transfers.id,
transfers.name AS name,
transfers.pickup_time AS pickup_time,
transfers.voucher AS voucher,
transfer_types.name AS type,
drivers.name AS driver
FROM
transfers
INNER JOIN transfer_types ON transfer_types.id = transfers.type
INNER JOIN drivers ON drivers.id = transfers.driver
这是外键:
CREATE TABLE `transfers` (
`id` int(10) UNSIGNED NOT NULL,
`voucher` varchar(24) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`type` int(10) UNSIGNED DEFAULT NULL,
`pickup_time` time DEFAULT NULL,
`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`driver` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
答案 0 :(得分:3)
使用left join
代替inner join
:
SELECT
transfers.id,
transfers.name AS name,
transfers.pickup_time AS pickup_time,
transfers.voucher AS voucher,
transfer_types.name AS type,
drivers.name AS driver
FROM
transfers
LEFT JOIN transfer_types ON transfer_types.id = transfers.type
LEFT JOIN drivers ON drivers.id = transfers.driver