Я пытаюсь разработать приложение для голосования, которое требует расширенных запросов к базе данных. Приложение позволяет пользователям голосовать за других пользователей, используя их номера телефонов. Поэтому убедитесь, что пользователь с множеством телефонных номеров получает все свои голоса, вместе взятые, у меня есть таблица, связывающая их номера телефонов, используя их национальный идентификационный номер. В конце концов, у меня есть две таблицы, как так:mysql procedure/function
user_national_id стол
user_phone_no | national_id
-------------------- | -----------------
Phone1 | nat_id1
phone2 | nat_id1
голосов таблица
user_phone_no | отправитель
-------------------- | -----------------
Phone1 | sender1
Phone1 | sender2
phone2 | sender3
phone2 | sender2
Теперь мне нужен метод, который собирает уникальные национальные идентификационные номера в таблице user_national_id, связывает национальный идентификатор с телефонными номерами пользователя в таблице user_national_id, а затем подсчитывает количество обратных номеров телефона в таблице голосов.
Заранее благодарен.
(переехал из комментария ...)
DELIMITER $$
CREATE PROCEDURE GetUniqueNominees()
BEGIN DECLARE done BOOLEAN;
DECLARE nomIds VARCHAR(255);
DECLARE curIds CURSOR FOR
SELECT DISTINCT national_id
FROM user_national_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;
OPEN curIds;
LOOPROWS: LOOP
IF done=TRUE THEN
CLOSE curIds;
LEAVE LOOPROWS;
END IF;
FETCH curIds
INTO nomIds;
SELECT DISTINCT nomIds;
select count(user_phone_no)
from votes
inner join user_national_id
ON (votes.user_phone_no = user_national_id.user_phone_no)
where national_id=nomIds;
END LOOP;
END$$
DELIMITER ;
@mmushtaq Я плохо разбираюсь в Sql, но я пробовал объединения, которые явно не работали – user3783697
вот что я до сих пор нашел – user3783697
проблема в том, что он возвращает каждый результат дважды – user3783697