多个关键字,多个表格。我的SQL应该怎么样? (附截图)

时间:2012-01-25 14:19:04

标签: php mysql keyword multiple-tables

我的数据库中有这些表:

Contacts
   -contact_id
   -contact_name

File
   -file_id
   -file_code
   -customer_id
   -hauler_id

File_details
   -file_id
   -loadunload_id
   -loadunload_date
   -loadunload_time

LoadUnload
   -loadunload_id
   -loadunload_place

这些输入作为我网页上的搜索字段。结果通过Ajax发送,整个系统将在离线本地网络中运行:

"File Code" (file.file_code)
"Customer Name" (contacts.contact_name)
"Hauler name" (contacts.contact_name)
"Load place" (loadunload.loadunload_place)
"Load date" (loadunload.loadunload_date)
"Unload place" (loadunload.loadunload_place)
"Unload date" (loadunload.loadunload_date)

我应该在屏幕上显示以下结果:

File Code | Customer | Load place | Load time | Unload place | Unload time | Weight | Hauler

填写在搜索字段中的一个应显示结果以及多个填写的搜索字段。我真正需要的只是我的file.file_id。有了这个,我可以在我的html表中显示我需要的所有其他东西,但我没有一个线索我的SQL应该是什么样子。我的猜测是我的sql中需要大约一百万个连接?

我附上了一个带截图的链接,这可能会让事情变得更容易理解。 Screenshot link

1 个答案:

答案 0 :(得分:2)

假设File.customers_idContacts.contact_id的外键,sql应为:

SELECT *
FROM File AS f
    JOIN Contacts AS c ON (f.customers_id = c.contact_id)
    JOIN File_details AS fd ON (fd.file_id = f.file_id)
    JOIN LoadUnload AS l ON (fd.loadunload_id = l.loadunload_id)

这应该返回所有条目。对于过滤,添加WHERE子句:

WHERE f.file_code = '<filecode>' AND ...

希望这有帮助