![](/img/trans.png)
[英]join two mysql queries to order the first query by the result of the second
[英]MySQL sub query in Laravel, how to join queries and add second query's result as a new column to first query?
我有兩個表:
- PRODUCTS (having: ID, NAME, PRICE)
- LIKES (having: ID, PRODID, NAME)
我想查詢第一個表,同時在子查詢中計數(並返回為新列)該產品具有的所有贊。 如何合並以下查詢?
$products = DB::table('PRODUCTS')
->get();
$likes = DB::table('LIKES')
->select(DB::raw('count(*) as total'))
->where('PRODID', '=', 'product id from first table')
->get();
如何使用Laravel查詢實現這一目標? 謝謝!
這不是您明確要求的答案,但是作為替代,使用Eloquent非常容易處理。
$products = Product::with('likes');
foreach ($products as $product) {
echo 'Number of likes: '.$product->likes->count();
}
使用帶有group by子句的聯接,而不是子查詢。 這樣,您可以一次獲得所有產品的計數,而不必一一查詢。 sql如下所示:
select p.id, p.name, p.price, count(l.id) as likecount
from products p
left join likes l on p.id=l.prodid
group by p.id, p.name, p.price
這樣嘗試
$likes = DB::table('LIKES')
->join('PRODUCTS', 'LIKES.PRODID', '=', 'PRODUCTS.id')
->select('LIKES.*')
->where('PRODUCTS.id', '=', 3)
->get();
$total_like = count($likes);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.