2012-01-25 37 views
1

我有我的數據庫中的這些表:多個關鍵字,多個表。我的SQL應該如何? (截圖附後)

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

回答

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 ... 

希望這有助於

+0

你需要一個'GROUP BY f.file_id',否則你會得到相同的文件多次(有一個多TO- 'File'和'LoadUnload'表之間有許多關係)。 –

相關問題