質問編集履歴

1

inner joinでは取得できたこと

2016/03/25 00:09

投稿

toss
toss

スコア56

test CHANGED
@@ -1 +1 @@
1
- doctrineのDQLでテーブルを連結させた
1
+ DQLでLEFT JOINできな
test CHANGED
@@ -1,4 +1,6 @@
1
- 下記のようなテーブルがあり、省略していますがそれぞれに値が入っていま(はクラス名)
1
+ 下記のようなテーブルがあり、省略していますがそれぞれに値が入っていて、LEFT JOINで結合したいのですが、結果が表示されせん何が間違っているでしょうか
2
+
3
+ ?(クラス名)
2
4
 
3
5
 
4
6
 
@@ -62,7 +64,7 @@
62
64
 
63
65
 
64
66
 
65
- これらのテーブルを合わせてdtb_productにdtb_orderのstatusを入れたものをとりだしたいです。こんな感じです。
67
+ これらのテーブルを合わせてdtb_productにdtb_orderのstatusを入れたものをとりだしたいです。イメージいえばこんな感じにしたいです。
66
68
 
67
69
  +---------------+----------------+--------------+------------+
68
70
 
@@ -74,7 +76,7 @@
74
76
 
75
77
 
76
78
 
77
- 以下のコードでdtb_product抽出できました。
79
+ 以下のコードでdtb_productだけは抽出できました。
78
80
 
79
81
 
80
82
 
@@ -96,15 +98,33 @@
96
98
 
97
99
 
98
100
 
101
+ また、$em = $app['orm.em'];//パターン3
102
+
103
+ $query = $em->createQuery('SELECT p,od,o FROM ECCUBE\Entity\Product p, Eccube\Entity\OrderDetail od, Eccube\Entity\Order o WHERE od.Order = o.id AND p.id = od.Product AND p.Creator = '.$seller.'');
104
+
105
+ $sellProduct = $query->getResult();
106
+
107
+ では3つの連結バージョンが取得できましたが、すべてのレコードが表示されてしまいます。
99
108
 
100
109
 
101
110
 
102
111
 
103
- セレクト文の
104
112
 
105
- SELECT p FROM ECCUBE\Entity\Product p WHERE p.Creator = 3
113
+ そこで
106
114
 
107
- をどんな記述にすれば、上記を実現できるでしょうか?
115
+ $em = $app['orm.em'];//パターン3ver2
116
+
117
+ $query = $em->createQuery('SELECT p,od,o FROM ECCUBE\Entity\Product p LEFT JOIN Eccube\Entity\OrderDetail od ON p.id = od.Product LEFT JOIN Eccube\Entity\Order o ON od.Order = o.id WHERE p.Creator = '.$seller.'');
118
+
119
+ $sellProduct = $query->getResult();
120
+
121
+
122
+
123
+ これでいけるのでは?と思ったのですが、表示できませんでした。
124
+
125
+ どこが間違っているでしょうか?
126
+
127
+
108
128
 
109
129
 
110
130