2016-06-30 74 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是我無法達到的唯一列,我仍然不知道爲什麼 –