maysam.m
شنبه 06 آبان 1391, 18:27 عصر
سلام
من سه تا جدول با ساختار فرضی زیر دارم.
website = id, url, category_id
category = id, name
news = id, website_id
میخوام جدول website رو با جدول category بر اساس ستون مشترک category_id ادغام کنم که تا اینجا مشکلی نیست.
خروجی میشه: لیست سایت ها با نام دسته ی هر سایت به اضافه نمایش تعداد خبرهای هر سایت
در واقع نام هر دسته و تعداد خبرهای هر سایت به جدول "website" اضافه بشه.
SELECT *
FROM website w
LEFT JOIN `categoey` ON (w.category_id = category.id)
ORDER BY w.id DESC
مشکل از اینجا بوجود میاد که میخوام تعداد count(*) هر رکورد موجود در جدول website رو بر اساس تعداد رکوردهای موجود در جدول news بدست بیارم . یعنی اینجوری
SELECT COUNT(*) FROM news WHERE w.id = news.website_id
و همه ی اینها رو با ساب کوئری بهم چسبوندم که کار نکرد:
SELECT w.*,(
SELECT COUNT(*)
FROM news
WHERE w.id = news.website_id) AS `num`
FROM website w
LEFT JOIN `categoey` ON (w.category_id = category.id)
-- LEFT JOIN `news` ON (w.id = news.website_id)
ORDER BY w.id DESC
-- GROUP BY w.id
خروجی تقریبا این باید بشه:
table website:
id url category_id
1 php-jquery.ir 1
2 google.com 2
3 www.php-jquery.ir 1
table category:
id name
1 php
2 search
table news:
id text website_id
1 php...! 1
2 jQuery!... 1
3 mySql 1
output:
website_id website_url website_category website_count_news
1 php-jquery.ir php 3
2 google.com search 0
3 www.php-jquery.ir php 0
ممنون میشم کمک کنید.
من سه تا جدول با ساختار فرضی زیر دارم.
website = id, url, category_id
category = id, name
news = id, website_id
میخوام جدول website رو با جدول category بر اساس ستون مشترک category_id ادغام کنم که تا اینجا مشکلی نیست.
خروجی میشه: لیست سایت ها با نام دسته ی هر سایت به اضافه نمایش تعداد خبرهای هر سایت
در واقع نام هر دسته و تعداد خبرهای هر سایت به جدول "website" اضافه بشه.
SELECT *
FROM website w
LEFT JOIN `categoey` ON (w.category_id = category.id)
ORDER BY w.id DESC
مشکل از اینجا بوجود میاد که میخوام تعداد count(*) هر رکورد موجود در جدول website رو بر اساس تعداد رکوردهای موجود در جدول news بدست بیارم . یعنی اینجوری
SELECT COUNT(*) FROM news WHERE w.id = news.website_id
و همه ی اینها رو با ساب کوئری بهم چسبوندم که کار نکرد:
SELECT w.*,(
SELECT COUNT(*)
FROM news
WHERE w.id = news.website_id) AS `num`
FROM website w
LEFT JOIN `categoey` ON (w.category_id = category.id)
-- LEFT JOIN `news` ON (w.id = news.website_id)
ORDER BY w.id DESC
-- GROUP BY w.id
خروجی تقریبا این باید بشه:
table website:
id url category_id
1 php-jquery.ir 1
2 google.com 2
3 www.php-jquery.ir 1
table category:
id name
1 php
2 search
table news:
id text website_id
1 php...! 1
2 jQuery!... 1
3 mySql 1
output:
website_id website_url website_category website_count_news
1 php-jquery.ir php 3
2 google.com search 0
3 www.php-jquery.ir php 0
ممنون میشم کمک کنید.