Не могу понять запрос MySQL - PullRequest
       1

Не могу понять запрос MySQL

1 голос
/ 26 декабря 2011

Я новичок в PHP и MySQL -> Я еще не хорошо. Сегодня я столкнулся с проблемой. У меня есть запрос, который объединяет 2 таблицы «голоса» и «истории» Вот оно:

SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories JOIN votes ON stories.id = votes.item_name WHERE stories.st_date >= DATE_SUB(NOW(), INTERVAL 32 DAY) 
GROUP BY stories.id 
ORDER BY total_votes ASC LIMIT 10

Мне нужно изменить его, чтобы он выбирал информацию только из таблицы «историй», где поле показывает = 1

Простой запрос будет выглядеть так:

SELECT * FROM stories WHERE showing = 1

Но я понятия не имею, как реализовать его первым запросом, где я объединяю две базы данных.

Ответы [ 5 ]

2 голосов
/ 26 декабря 2011
SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories, votes 
WHERE stories.id = votes.item_name AND stories.showing = 1 AND stories.st_date >= DATE_SUB(NOW(), INTERVAL 32 DAY)
GROUP BY stories.id 
ORDER BY total_votes ASC LIMIT 10
2 голосов
/ 26 декабря 2011
SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories JOIN votes ON stories.id = votes.item_name $date 
WHERE showing=1
GROUP BY stories.id 
ORDER BY total_votes ASC LIMIT 10

Просто вставьте туда where.Убедитесь, что разместили его в правильном порядке.

1 голос
/ 26 декабря 2011

Используйте HAVING, показывая = 1, и это должно исправить вашу проблему.

1 голос
/ 26 декабря 2011

измените ваш запрос на

SELECT stories.*, SUM(votes.vote_value) as 'total_votes' FROM stories 
JOIN votes ON stories.id = votes.item_name 
WHERE stories.showing = 1 
GROUP BY stories.id 
ORDER BY total_votes ASC LIMIT 10
1 голос
/ 26 декабря 2011

Нетрудно просто добавить его, так как это базовая таблица объединений:

SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories JOIN votes ON stories.id = votes.item_name $date 
WHERE stories.showing = 1
GROUP BY stories.id 
ORDER BY total_votes ASC LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...