我有一个名为accounts
的表
我有名为
id
provider
type
account_name
它们的结构为
id - int(12)
provider -int(12)
type - int(12)
account_name - Varchar(25)
我认为联接或子查询可以工作,但无法正常工作目的是我想显示同时具有这两种type=2 and type=5 ORDER By account_name
的提供程序
例如,显示同时出售房地产和贷款的公司
Select * from accounts WHERE type = 2 and type=5
我知道上述方法不起作用,但它是我需要的心态。我感谢任何帮助,使它工作。
mysql 输出结果在一行中应如下所示。
例如
提供商Account_Name1(此匹配 2( Account_Name2(匹配 5(约翰逊 - 约翰逊房地产 - 约翰逊贷款
这应该查找同时具有id
2 和 5 的提供程序:
select provider
from accounts
where id in (2,5)
group by
provider
having count(distinct id) = 2
select distinct acc2.provider,acc2.account_name,acc5.account_name
from accounts acc2 inner join accounts acc5 on acc2.provider=acc5.provider
where acc2.type = 2 and acc5.type = 5
这有点假设不会有重复的provider
/type
组合。 例如,一个提供程序具有具有相同type
的多行。事实上,如果数据符合该要求,则不需要distinct
。
我还要说,这是一个有点奇怪的桌子,尽管我不知道完整的故事。这似乎是用于将提供程序与帐户类型相关联的表。提供商和帐户类型的每个关联都可以有一个Account_Name。我认为这最好用 3 张表来表示。
TABLE Provider (
ID INT PK
Name VARHCAR(50)
)
TABLE AccountType (
ID INT
AccountType VARCHAR(50)
)
TABLE ProviderAccountType (
ProviderID PK FK
AccountTypeID PK FK
AccountName VARCHAR(50)
)