2012-03-12 4 views
0

Как переписать этот запрос, чтобы показать правильное значение для дополнительного запроса claims, если в списках для этой учетной записи нет записи, но есть 1 запись в claimed_listings. Благодаря!Значение подзапроса MySql не показывает правильный результат

SELECT status, (SELECT count(id) 
       FROM claimed_listings 
       WHERE account_id = 1) AS claims 
FROM listings 
WHERE account_id = 1 

Я ожидал увидеть результат, как

status | claims 
    A | 1 
    F | 1 
    E | 1 

в этом случае есть три объявления и 1 требование листинга. Проблема в том, что нет листинга (-ов) и 1 списка претензий, я не получаю результатов вообще?

ответ

2

попробовать это:

SELECT a.Account_ID, Count(b.Account_ID) TotalAcount 
FROM claimed_Listings a LEFT JOIN listings b 
     on a.account_ID = b.Account_ID 
WHERE a.Account_ID = 1 
GROUP BY a.Account_ID 
+0

Благодаря кучу, но это не работает. – gus

+0

Я обновлю свой ответ. Можете ли вы включить схему своих таблиц? –

+0

@gus в этом ответе замените «ПРАВИЛЬНЫЙ JOIN Claim_Listings b» на «RIGHT JOIN assert_listings b», тогда он должен работать. – fancyPants

0

Попробуйте следующее (надеюсь, я вас правильно ..)

select count(cl.id), count(cl.account_id) 
from claimed_listings cl 
where cl.account_id=1 and cl.account_id not in (select account_id from listings) 
group by cl.id 
having count(cl.account_id) > 0; 
+0

Спасибо, но это не совсем то, что им после. Скажите, что у пользователя есть 1 претензия, но нет листингов, претензии по какой-то причине ничего не показывают? Если у пользователя есть листинг и претензия, то он работает? Я мог бы просто разбить его на 2 вопроса, если это невозможно? – gus

+0

Это возвращает Невозможно, ГДЕ заметили после чтения таблиц const. Ive обновил мой вопрос выше, если он поможет любому, спасибо. – gus

Смежные вопросы