我试图在这个问题中做到这一点,但我在#stackoverflow上太年轻以发表评论。 MySQL returning results from one table based on data in another table
我无法让这个工作。我的意图略有不同。
我打算一起工作,有两个表(以及将来会有更多表)。我想保持我的数据库大小,所以我没有使用完整的单词来引用time_code_department
,而是添加了一个列来引用“department_id”。现在我想从表中获取所有“time_codes”,其中“time_code_depart”id与输入的变量匹配。
因此,如果用户选择“Solar”部门并且time_code_department
表具有“9”作为“solar”“department_id”,那么我想返回“time_codes”中具有“department_id”“9”的所有条目time_codes
表。在这个例子中哪一行是id
40和75。
表格结构:
----------------------------------------------
| time_codes (table) |
| |
| id | department_id | code_number | code_name |
----------------------------------------------
| 40 | 9 | 35 | Safety |
| 52 | 10 | 725 | Inventory |
| 75 | 9 | 18 | Cabinets |
----------------------------------------------
-----------------------------------
| time_code_depart (table) |
| |
| department_id | name | manager |
-----------------------------------
| 9 | Solar | John |
| 10 | Finance | Mary |
| 11 | Design | Sue |
-----------------------------------
我试过查询:
SELECT 'department_id'
FROM `time_codes`
INNER JOIN `time_code_depart`
ON 'time_codes.department_id' = 'time_code_depart.department_id'
WHERE 'name' LIKE 'Solar'
和
SELECT 'time_codes.id', 'time_codes.code_number', 'time_codes.code_name'
FROM `time_codes`
ON 'time_codes.department_id' = 'time_code_depart.department_id'
WHERE 'time_code_depart.name'
LIKE 'Solar'
这两个基于关于该主题的几个读数而形成,并且我使用了几种变体的sentax。我无法让它返回id
40和75行的条目。
你能帮我辨别我哪里错了吗?
答案 0 :(得分:1)
引用时有几个问题。
首先,要引用MySQL中的表名或列名,请使用反引号;单引号用于制作字符串。
其次,当你有一个table.column时,你必须分别引用它们。
请注意,通常不需要引用表名和列名。如果它们与保留字相同或包含标点字符,则只需要引用它们。
SELECT `time_codes`.`department_id`
FROM `time_codes`
INNER JOIN `time_code_depart`
ON `time_codes`.`department_id` = `time_codes_depart`.`department_id`
WHERE `name` LIKE 'Solar'
当你有这样的长表名时,我建议使用表别名来使表达式更具可读性:
SELECT tc.department_id
FROM time_codes AS tc
INNER JOIN time_code_depart AS tcd
ON tc.department_id = tcd.department_id
WHERE name LIKE 'Solar'