2016-06-30 42 views
0

你好,选择和计数连接表

我做一个网站,人们可以买票表演,我需要知道有多少门票取决于可变日期的销售。

我有2个表:

1)含有预约日期预约表;
2)连接到我的预订表的票单表。

这里是我的代码:

$qb = $repo->createQueryBuilder('a'); 
       $qb->select('a'); 
       $qb->where('a.dateReservation = :dateReservation'); 
       $qb->setParameter('dateReservation',$date); 
       $qb->leftJoin('a.ticket', 't'); 
       $qb->addSelect('COUNT(t)'); 

如果有人知道如何从预订($日期)又算什么让加盟票,这将是真棒! (DQL要求者优先)

DataBase screenshot

回答

0

好了,所以这里是你想要的SQL代码,我不知道DQL

SELECT COUNT * 
FROM Ticket INNER JOIN Reservation 
ON Ticket.reservation_id = Reservation.id 
WHERE DATE = $date 

,当然你的函数的变量$日期这里

0

请参阅下面的销售票据的sql查询。我认为这会帮助你

SELECT COUNT(*) as sold_tickets 
FROM reservations r left join tickets t 
ON t.reservation_id = r.id WHERE date(r.date) = '2016-06-30' 
+0

男性我只注意到我可以访问除reservation_Id之外的所有门票属性。 我不知道为什么,我不知道该怎么做! –

+0

可以分享什么是表的主键和外键,也请看下面的代码。我想你需要把这个SELECT COUNT(*)作为sold_tickets FROM reservations r,tickets t WHERE t.reservation_id = r.id and date(r.date)='2016-06-30' –

+0

是的,我拍了一个屏幕拍摄: http://www.noelshack.com/2016-26-1467320183-zefz.jpg –

0

你很亲密。目前尚不清楚你遇到了什么问题,但我会猜测你没有得到你期望的结果。

这可能是因为您正在使用聚合函数(COUNT(t))而没有进行分组。

尝试增加:$qb->groupBy('a');

如果你想要什么,不办,请更新你的问题是什么发出你有更加清晰。

+0

谢谢,但在4 H seaching之后,我注意到我可以访问除reservation_Id之外的所有ticket properties。我不知道为什么,我不知道该怎么办! –

+0

reservation_id与你的问题有什么关系?请尽量更清楚。似乎你对外键的ticket.reservation_id感到困惑。你不能通过你的实体访问它。相反,你可以像'$ ticket-> getReservation() - > getId()'这样做。虽然reservation_id存在于数据库中,但实体中不存在* not *。 – timdev

+0

就像你看到的波纹管我需要ticket.reservation_id与我的reservation.id进行比较,但正如我告诉过你的,ticket.reservation_id是我无法达到的唯一列,我仍然不知道为什么 –