2017-10-04 4 views
-1

J'ai un schéma comme celui-ciA propos montrant données par sous-requête

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

  1. comment puis-je montrer doctorid, doctorname, doctorphone et doctorbirthyear (à partir de l'année de doctorbirthdate) où le médecin n'a jamais fait un inspection. Comment montrer le nom du médicament, le nom du médicament et le prix du médicament lorsque le médicament a été vendu le 12e mois de l'année. Comment puis-je montrer un nom de médicament, un nom de médicament et un médicament (avec USD) lorsque le médicament n'est pas vendu par doctorid = 'dc001'. Comment montrer patientid, patientname et patientbirthyear (à partir de l'année de la date d'arrivée du patient) où le patient a servi par le docteur plus jeune que le patient.

Mon oncle m'a demandé de résoudre ce même si je suis un étudiant d'art numérique (c'est compliqué), je n'ai honnêtement presque aucune idée sur MySQL, seules choses de base. S'il vous plaît, je vous implore de m'aider à résoudre ces questions. Je serai vraiment reconnaissant!

+0

partager quelques efforts de code/requête que vous avez pris pour résoudre ce qui précède, il ne s'agit pas seulement de poster la question – akhilsk

Répondre

0

1ère question

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

2ème question

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 
    ) 
) 
0

1- Comment afficher doctorid, doctorname, doctorphone et doctorbirthyear (à partir de l'année de doctorbirthdate) où le médecin n'a jamais fait une inspection.

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

2- Comment montrer medicinename, medicinetypename et medicineprice où le médicament vendu le 12 mois de l'année.

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- Comment afficher medicineid, medicinename et medicineprice (avec USD) où le médicament isnt vendu par 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- Comment montrer patientid, patientname et patientbirthyear (à partir de l'année de patientbirthdate) où le patient a servi par le médecin plus jeune que le patient.

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; 

Espérons que cela aide.

+0

c'est très utile. Merci mec –