我在编写SQL语句时遇到了一些麻烦。这是我的表结构:
预约:
| id | tattooId | date | time | length |
tattoo:
| id | customerID | staffID | description |
客户:
| id | name | email| address|
人员:
| id | name| surname| email|
我需要填写一个包含约会的列表框,但我想使用特定日期和特定工作人员的约会。例如,如果我选择日期10/03/2015和工作人员" Bob"我需要在该日期提取与Bob相关的所有约会。
SQLCommand.CommandText = "SELECT*FROM appointment" & _ " JOIN tattoo ON Appointment.TattooID=tattoo.ID" & _ " JOIN staff ON tattoo.StaffID='staff.ID'" & _ " WHERE appointment.Date='2015-02-06'" & _ " AND staff.staffname='" & _staff.Firstname & "';"
所以香港专业教育学院使用过它并没有提出任何语法错误,但它没有读取?我已经搞乱了周围并尝试了一些选择,但它没有拉任何东西。
我想要获得的确切数据是
appointment.Time
appointment.Length
appointment.Cost
Customer.name
抱歉忘了客户
但我会
JOIN Customer ON tattoo.CustomerID='Customer.ID'
答案 0 :(得分:1)
您可以通过加入tattooID列上的两个表来完成此操作,只需过滤约会表中的日期和纹身表中的staffID。试试这个:
SELECT *
FROM appointment a
JOIN tattoo t ON t.id = a.tattooID
WHERE a.date = '2015-10-03' AND t.staffID = @bobID;
您的表格中没有staffName
列,但我怀疑您能够获取该信息并适当过滤掉bob。
修改强>
要获取员工信息,只需添加另一个联接:
SELECT *
FROM appointment a
JOIN tattoo t ON t.id = a.tattooID
JOIN staff s ON s.id = t.staffID
WHERE a.date = '2015-10-03' AND s.name = 'Bob';
答案 1 :(得分:1)
假设包含ID和名称的StaffTable:
SELECT a.*
FROM AppointmentTable a
JOIN TattooTable t ON a.TattooID = t.ID
JOIN StaffTable s ON t.StaffID = s.ID
WHERE a.Date = '2015-03-10'
AND s.Name = 'BOB'