关于通过子查询显示数据

时间:2017-10-04 08:52:22

标签: mysql terminal subquery

我有这样的架构

http://sqlfiddle.com/#!3/690e8

  1. 如何展示医生从未接受过检查的医生,医生姓名,医生电话和医生年(医生年)。

  2. 如何在一年的第12个月出示药品的药品名称,药品名称和药品价格。

  3. 如何显示药物,药品名称和药品价格(含美元),其中药品不是由doctorid =' dc001'出售。

  4. 如何显示病人,病人姓名和患病生育年(从患者产科年份开始)患者服用的病人年龄小于患者。

  5. 我的叔叔让我解决这个问题,即使我是一名数字艺术学生(这很复杂),老实说我几乎不知道mysql,只知道基本的东西。拜托,我恳请你帮我解决这些问题。我真的很感激!

2 个答案:

答案 0 :(得分:0)

第一个问题

SELECT DoctorID, DoctorName, DoctorPhone, YEAR(DoctorBirthDate) as 'DoctorBirthYear' 
FROM MsDoctor
WHERE DoctorID NOT IN (SELECT DoctorID FROM TransactionHeader);

第二个问题

SELECT MsMedicine.MedicineName, CONCAT(MsMedicine.MedicinePrice,' USD'), MsMedicineType.MedicineTypeName  
FROM MsMedicine
INNER JOIN MsMedicineType ON MsMedicineType.MedicineTypeID = MsMedicine.MedicineTypeID
WHERE MedicineID IN (
    SELECT MedicineID FROM TransactionDetail
    WHERE TransactionID IN (
       SELECT TransactionID from TransactionHeader
        WHERE MONTH(TransactionDate) = 12
    )
)

答案 1 :(得分:0)

1-如何显示医生从未接受过检查的医生,医生姓名,医生电话和医生年(医生年)。

select doctorid, doctorname, doctorphone , year(DoctorBirthDate) as doctorbirthyear
from msdoctor 
where doctorid not in (select doctorid from transactionheader) ; 

2-如何显示一年中第12个月销售的药品名称,药品名称和药品价格。

select medicinename, medicinetypename,  medicineprice 
from MsMedicineType mt, MsMedicine m , TransactionDetail td, TransactionHeader th
where mt.MedicineTypeID=m.MedicineTypeID and m.MedicineID=td.MedicineID and td.TransactionID=th.TransactionID and month(th.TransactionDate) = 12;

3-如何显示药品,药品名称和药品价格(含美元),其中药品不是由doctorid =' dc001'出售。

select medicinename, medicinetypename,  concat(medicineprice,'$') as medicineprice 
from MsMedicineType mt, MsMedicine m , TransactionDetail td, TransactionHeader th
where mt.MedicineTypeID=m.MedicineTypeID and m.MedicineID=td.MedicineID and td.TransactionID=th.TransactionID and th.DoctorID!='dc001';

4-如何显示病人,患者姓名和患者出生年份(从患者出生年份开始)患者服用的患者比患者年轻。

select p.patientid, p.patientname, year(PatientBirthDate) as patientbirthyear 
from TransactionHeader th , msdoctor m,  mspatient p 
where th.DoctorID=m.DoctorID and th.PatientID=p.PatientID and PatientBirthDate>DoctorBirthDate;

希望这有帮助。