[英]Complicated INNER JOIN Mysql Query From 3 Tables in Laravel
我已經解決了幾個小時。 我想到了laravel關系,但不知道如何傳遞第二個條件,因為我需要關聯3個表。 我想在laravel中使用以下查詢。
SELECT
subscriptions.subscribed_to,
broadcasts. *,
FROM subscriptions
INNER JOIN broadcasts
WHERE subscriptions.subscriber = {$user_id}
AND (
SELECT COUNT(*) FROM seen_broadcasts
WHERE user_id = {$user_id}
AND broadcast_id = broadcasts.id
) = 0
ORDER BY broadcast.date DESC
有3張桌子。
user_id = subscriber_user_id, broadcast_id = broadcast_message_id
我希望能夠從userA訂閱但尚未看到的所有廣播公司獲取廣播。
上面的查詢當前可在laravel外運行。
經過許多變通后,我最終得到了這一點:
$broadcast_result = DB::select( DB::raw("
SELECT
subscriptions.subscribed_to,
broadcasts.*
FROM subscriptions
INNER JOIN broadcasts
WHERE subscriptions.browser_agent_id = :subsc_id
AND broadcasts.user_id = subscriptions.subscribed_to
AND (
SELECT COUNT(*) FROM broadcasts_seen
WHERE broadcast_id = broadcasts.id
AND subscriber_id = subscriptions.subscriber_id
) = 0
ORDER BY broadcasts.date DESC LIMIT 1
"), array(
'subsc_id' => $subscriber->id
));
$broadcast_set = $broadcast_result[0];
還添加use DB;
在控制器中。
如果有更好的方法,請分享。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.