选择特定职员的特定日期的约会

时间:2015-03-10 15:05:18

标签: mysql sql database vb.net

我在编写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'

2 个答案:

答案 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'