我有下面给出的三个表,我想在单个查询中搜索三个不同自助餐厅的记录,我想搜索记录是否用户给出Brand_Name , Drug_Id, Generic Name
它给出相同的输出I.E. all record of That Drug_ID
,我是数据库的新手,但我认为我使用Multiple select queries
解决了它,但需要花费太多时间
我搜索过&发现联接更快,所以我试图使用它,但永远不会得到确切的答案,
可以使用联接来解决,如果是,那么如果不是,那么为什么不
Table: Company_List ([Company_ID],[Company_Name],[Company_Address],[Company_Contact],[Company_Website],[Company_Fax])
Table: Drugs_List ([Drug_ID],[Generic_Name],[Dosage_Form],[Max_Course],[Drug_Type],[Adult_Dosage],[Paediatric_Dosage_20Kg],[Neonatal_Dosage_3Kg],[Frequency])
Table: Drug_Details ([Company_ID],[Drug_ID],[Brand_Name],[Package_Size],[Price])
工作(但需要花费太多时间)
SELECT distinct(Company_List.Company_Name),
Drug_Details.*
from Drug_Details , Company_List,Drugs_List
where Drug_Details.Company_ID=Company_List.Company_ID And
(
Drug_Details.Drug_ID ='arnica' OR
Brand_Name Like '%arnica%' OR
Drugs_List.Generic_Name Like '%arnica%'
and(Drugs_List.Drug_ID=Drug_Details.Drug_ID)
);
输出:
转换为内部联接(不工作)
SELECT distinct(Company_List.Company_Name),
Drug_Details.*
from Drug_Details , Company_List
INNER JOIN Drugs_List
ON Drug_ID=Drugs_List.Drug_ID
where Drug_Details.Company_ID=Company_List.Company_ID And
(Drug_Details.Drug_ID ='arnica' OR
Brand_Name Like '%arnica%')
输出:
select * from Drugs_List where Generic_Name like'%arnica%'
输出:
select * from Drug_Details where Brand_Name like'%arnica%'
输出:
select * from Drug_Details where Drug_ID='a0927'
输出:
答案 0 :(得分:2)
我认为你想要这种情况
Brand_Name , Drug_Id, Generic Name
)Retrieved Drug_ID
SELECT distinct(Company_List.Company_Name),
Drug_Details.*
from Drug_Details , Company_List
where Company_List.Company_ID=Drug_Details.Company_ID and Drug_Details.Drug_ID in
(
select distinct(Drug_Details.Drug_ID) from Drug_Details where Drug_Details.Brand_Name like '%arnica%' or Drug_Details.Drug_ID in
(
select Distinct(Drugs_List.Drug_ID) from Drugs_List where Generic_Name like '%arnica%' or Drugs_List.Drug_ID='arnica'
)
)
最内部查询
select Distinct(Drugs_List.Drug_ID) from Drugs_List where Generic_Name like '%arnica%' or Drugs_List.Drug_ID='arnica'
从Drug_Id's
表中检索所有Drug_List
如果给定标准与Generic_Name
或Drug_ID
匹配
结果:A0925,A0926,A0927,A0928,A0929,B0271
中间内部查询
select distinct(Drug_Details.Drug_ID) from Drug_Details where Drug_Details.Brand_Name like '%arnica%' or Drug_Details.Drug_ID in
(
select Distinct(Drugs_List.Drug_ID) from Drugs_List where Generic_Name like '%arnica%' or Drugs_List.Drug_ID='arnica'
)
//Query as given below
select distinct(Drug_Details.Drug_ID) from Drug_Details where Drug_Details.Brand_Name like '%arnica%' or Drug_Details.Drug_ID in
(
'A0925','A0926','A0927','A0928','A0929','B0271'
)
结果:A0927
如果给定标准与Generic_Name
或Drug_ID
或Brand Name
匹配,则检索选定的Drug_Id
最外面的查询
SELECT distinct(Company_List.Company_Name),
Drug_Details.*
from Drug_Details , Company_List
where Company_List.Company_ID=Drug_Details.Company_ID and Drug_Details.Drug_ID in
(
select distinct(Drug_Details.Drug_ID) from Drug_Details where Drug_Details.Brand_Name like '%arnica%' or Drug_Details.Drug_ID in
(
select Distinct(Drugs_List.Drug_ID) from Drugs_List where Generic_Name like '%arnica%' or Drugs_List.Drug_ID='arnica'
)
)
//Query as given
SELECT distinct(Company_List.Company_Name),
Drug_Details.*
from Drug_Details , Company_List
where Company_List.Company_ID=Drug_Details.Company_ID and Drug_Details.Drug_ID in
(
'A0927'
)
结果:根据
检索记录 Company ID :1 , Drug_ID : A0927
Company ID :9 , Drug_ID : A0927