2013-10-07 5 views
0

Я пытаюсь создать процедуру, которая возвращает таблицу с некоторой информацией из моей базы данных, в которой перечислены номера отеля, количество клиентов, использующих каждый тип своих кредитных карт в отеле.Построение таблицы с использованием процедур

Имея в виду, что существует более 50 отелей и 3 типов кредитных карт, я хочу, чтобы процедура пробежать данных и список, то в таблице

DELIMITER //  
DROP PROCEDURE IF EXISTS `testing` // 
CREATE PROCEDURE `testing`(OUT param1 VARCHAR(40)) 

BEGIN 

DECLARE id_cnpjEstabelecimento VARCHAR(40); 
DECLARE id_redeCartão VARCHAR(255); 

SELECT (cnpjEstabelecimento) 
FROM fpcsmovatlantica201308tst04; 
SET id_cnpjEstabelecimento := cnpjEstabelecimento; 

SELECT (id_redeCartão) 
FROM fpcsmovatlantica201308tst04; 
SET id_redeCartão := id_redeCartão; 

SELECT count(*) 
FROM fpcsmovatlantica201308tst04; 
WHERE redeCartão like 'id_redeCartão%'; 
AND cnpjEstabelecimento like 'id_cnpjEstabelecimento%'; 

END // 
DELIMITER ; 

пример выбора

SELECT count(*) 
FROM fpcsmovatlantica201308tst04 
WHERE redeCartão like 'Cielo%' 
AND cnpjEstabelecimento like '02223966000466%' 

cnpjEstabelecimento получил несколько значений, более чем 100 +, так что это жизнеспособны сделать все выбирает

Я даже не придется использовать процедуры, чтобы сделать это, конечный результат был

SELECT cnpjEstabelecimento, redeCartão, count(*) 
FROM fpcsmovatlantica201308tst04 
WHERE redeCartão like 'Cielo%' 
GROUP BY cnpjEstabelecimento,redeCartão like 'Cielo%' 
ORDER BY cnpjEstabelecimento ASC; 
+0

Существует еще одна проблема, мне нужно, чтобы сделать процедуру, чтобы сделать эти выбирает автоматически, поэтому они проходят через базу данных и сделать эту вещь только путем вызова процедуры –

ответ

0

I предполагаю, у вас есть одна таблица, которая выглядит вроде как это:

|hotelId|cardType|etc... 

Я бы пойти с:

Select hotelId, cardType, count(*) 
from myTable 
group by hotelId, cardType 

Я проверил это here со следующим SQL:

SELECT country, city, count(*) 
from customers 
group by country, city 
ORDER BY Country; 
+0

Да, это так, но проблема в том, что есть несколько идентификаторов отелей, поэтому, если мне нужно сделать это, мне нужно создать более 100+. Выбирает –

+0

@GabrielTaniguchi. Я обновил свой пример. Он должен дать вам то, что я думаю, что вы хотите. – user2793390

+0

Другая проблема заключается в том, что существует несколько различных типов Credict карт, но все они получили одинаковые начальные имена, например: Cielo - Маэстро Cielo - Mastercard Мне нужно сделать «как» заявление, чтобы собрать их –

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