gpt4 book ai didi

php - 多行的内部连接

转载 作者:行者123 更新时间:2023-11-29 03:20:27 24 4
gpt4 key购买 nike

我想对多行使用内部联接。

我有一个表 Company,它与 Market 表有一对多的关系。

class Company
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="Market",cascade={"persist"})
* @ORM\JoinTable(name="companys_markets",
* joinColumns={@ORM\JoinColumn(name="company_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="market_id", referencedColumnName="id")}
* )
*/
private $markets;

class Market
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @ORM\Column(type="string",nullable=false,unique=true)
*/

private $name;

如果设置这两个类,Doctrine 会自动生成三个表。

然后我设置如下数据,这些表示 Company A 属于 ITTransCompany B属于FinanceCompany C属于ItTrans

Company Table
id bane
1 A
2 B
3 C

companys_markets Table
company_id sector_id
1 1
1 2
2 3
3 1
3 2

Sector Table
Id name
1 IT
2 Trans
3 Finance

在这种情况下,我想要的是这样的,公司和部门的每个组合

A 1
A 2
B 3
C 1
C 2

如果这种关系是单向的,我可以通过 inner join 得到这样的结果。但是,在这种情况下,c.markets 是多重的,所以它不起作用。

$this->em->createQuery(
"SELECT c.name,c.code,m.name as marketName FROM UserBundle:Company c
Inner join UserBundle:Market m with m.id = c.markets where c.enabled = true")->getResult()

那么我怎样才能得到这些结果呢??

最佳答案

我不认为我听从了你的说法,但为了从你提供的数据中得到你想要的结果,我这样做了:

首先创建临时表:

declare @Company Table ( id int, bane varchar(1) )
insert into @Company values
(1,'A'),
(2,'B'),
(3,'C')

declare @companys_markets Table (company_id int, sector_id int)
insert into @companys_markets values
(1,1),
(1,2),
(2,3),
(3,1),
(3,2)

declare @Sector Table (Id int, name varchar(40))
insert into @Sector values
(1, 'IT'),
(2, 'Trans'),
(3, 'Finance')

然后使用这个查询:

select
c.bane,s.Id
from @companys_markets cm
inner join @Company c on cm.company_id = c.id
inner join @Sector s on cm.sector_id = s.Id

得到这个结果:

A   1
A 2
B 3
C 1
C 2

关于php - 多行的内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46099746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com