SQL - 打印具有特定数据类型和日期的列表。

时间:2016-06-15 19:05:17

标签: sql ms-access

我要求显示2004年5月注射的宠物清单。我不是要显示访问日期,宠物名称,类型,品种和治疗类型。然后我需要在访问日期之前对报告进行排序。到目前为止,我已经添加了我的SQL命令以及我的宠物和访问表的结构。我不知道如何从我当前的SQL命令转到问题所请求的命令。

SELECT Visit_Date, Name, Type, Breed, Treatment
FROM visit, pet
WHERE Treatment = 'injection'
ORDER BY Visit_Date;

宠物表结构:

pet_id, Name, Type, Breed, Gender, Born, owner_id, Notes

示例数据:     P0001,Tiddles,cat,persian,F,1998,2,脾气暴躁,刮伤你

访问表格结构:

visit_id, pet_id, vet_id, Visit_Date, Basic_Cost, Symptom, Treatment

示例数据:     VS01,P0001,V01,21 / 04 / 2004,23.99,咬伤左耳,注射

我真的希望你能提供帮助,因为我不知道如何继续这里。任何帮助都非常受欢迎,请注意我正在使用ms访问。

2 个答案:

答案 0 :(得分:2)

这有助于您了解连接类型: https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

一些事情:

  1. 了解如何使用INNER / Outer join语法连接表格
  2. 了解年份()功能
  3. 了解月份()功能
  4. 了解如何对表进行别名以节省输入并提高可读性(并在所有字段中使用它们,以便在不同的表中存在相同的命名列时知道源表是什么。
  5. SELECT V.Visit_Date, P.Name, P.Type, P.Breed, V.Treatment
    FROM visit V
    INNER JOIN  pet P
      on V.Pet_ID = P.Pet_ID 
    WHERE V.Treatment = 'injection'
      and month(v.visit_Date) = 5
      and year(V.visit_date) = 2004
    ORDER BY V.Visit_Date;
    

答案 1 :(得分:0)

与ON pet_id加入可获得预期结果。使用MONTHYEAR功能进行日期过滤。

还使用表别名来提高可读性。

SELECT V.Visit_Date, P.Name, P.Type, P.Breed, V.Treatment
FROM visit AS V
JOIN pet AS P ON P.pet_id = V.pet_id
WHERE V.Treatment = 'injection' AND MONTH(V.Visit_Date) = 5 AND YEAR(V.Visit_Date) = 2004
ORDER BY V.Visit_Date;
相关问题