Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сделать View из запроса / 12 сообщений из 12, страница 1 из 1
23.03.2015, 10:01:32
    #38912857
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
имеется звапрос(не мой). Пытаюсь сделать из него view:

Cервер матерится:
Код: sql
1.
#1349 - View's SELECT contains a subquery in the FROM clause 



В то врямя как сам запрос отдельно исполняется на ура!!

В чём дело и как поправить?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
CREATE VIEW vwWithdraw AS 
SELECT c.`customerId`, c.`paymentMethod`, c.`amountUSD`, c.`requesttime`, c.`confirmTime`, c.`status`, cn1.`saleStatus`, c.`confirmationcode`,c.`cancelReason`,
cn3.username AS UserName,
IFNULL(cn2.name,'no desk') deskName,
cn4.name AS Country,
cn1.isdemo ,
cn7.name AS Campaign,
cn6.param AS Affiliate,
MONTH(c.`confirmTime`) AS ConfirmMonth,
YEAR(c.`confirmTime`) AS ConfirmYear,
cn1.firstDepositDate AS FTDdate,
MONTH(cn1.firstDepositDate) AS FTDMonth,
YEAR(cn1.firstDepositDate) AS FTDYear,
IF(cn1.lastlogindate='0000-00-00 00:00:00','NOLOGIN',(IF(DATEDIFF(DATE(NOW()),DATE(cn1.lastlogindate)) > 14, 'PASSIVE' , 'ACTIVE'))) AS ClientStatus,
(SELECT COUNT(*) FROM withdrawals 
	WHERE id = c.`id` AND paymentMethod NOT LIKE 'Bonus' AND paymentMethod NOT LIKE 'Wallet1' AND paymentMethod NOT LIKE 'WebMoney' 
	AND paymentMethod NOT LIKE 'Payoneer' AND paymentMethod NOT LIKE 'InactivityFee' AND paymentMethod NOT LIKE 'Fees' AND STATUS LIKE 'approved') AS WDCount,
CASE
         WHEN (IF(cn1.lastCallDate='0000-00-00 00:00:00',-1,DATEDIFF(DATE(NOW()),DATE(cn1.lastCallDate)))) = -1 THEN 'NOCOMMENT'
         WHEN (IF(cn1.lastCallDate='0000-00-00 00:00:00',-1,DATEDIFF(DATE(NOW()),DATE(cn1.lastCallDate)))) >30 THEN '30+'
         WHEN (IF(cn1.lastCallDate='0000-00-00 00:00:00',-1,DATEDIFF(DATE(NOW()),DATE(cn1.lastCallDate)))) < 8 THEN '0-7'
         WHEN (IF(cn1.lastCallDate='0000-00-00 00:00:00',-1,DATEDIFF(DATE(NOW()),DATE(cn1.lastCallDate)))) < 15 THEN '8-14'
         WHEN (IF(cn1.lastCallDate='0000-00-00 00:00:00',-1,DATEDIFF(DATE(NOW()),DATE(cn1.lastCallDate)))) < 31 THEN '15-30'
      END AS CommentCategory,
cn1.verification,
MONTH(c.`requesttime`) AS RequestMonth,
YEAR(c.`requesttime`) AS RequestYear,
IF(cn1.`lastTimeInvestment`='0000-00-00 00:00:00',-1,DATEDIFF(DATE(NOW()),DATE(cn1.`lastTimeInvestment`))) AS LastInvDate,
cc.cc_info, bal.lastBalance, clear.ClearedBy_info,
(SELECT COUNT(*) FROM withdrawals WHERE id = c.`id` AND paymentMethod NOT LIKE 'Bonus' AND paymentMethod NOT LIKE 'Wallet1' AND paymentMethod NOT LIKE 'WebMoney'
	AND paymentMethod NOT LIKE 'Payoneer' AND paymentMethod NOT LIKE 'InactivityFee' AND paymentMethod NOT LIKE 'Fees' AND STATUS LIKE 'canceled') AS WDCountCanceled,
(SELECT COUNT(*) FROM withdrawals WHERE id = c.`id` AND paymentMethod NOT LIKE 'Bonus' AND paymentMethod NOT LIKE 'Wallet1' AND paymentMethod NOT LIKE 'WebMoney'
	AND paymentMethod NOT LIKE 'Payoneer' AND paymentMethod NOT LIKE 'InactivityFee' AND paymentMethod NOT LIKE 'Fees' AND STATUS LIKE 'pending') AS WDCountPending
FROM withdrawals c
LEFT JOIN customers cn1 ON cn1.id=c.`id`
LEFT JOIN desks cn2 ON cn2.id=(SELECT u.`deskId` FROM user_desks u WHERE u.`userId` LIKE cn1.employeeInChargeId  AND u.`deskId` != 40 LIMIT 1)
LEFT JOIN users cn3 ON cn3.id=cn1.employeeInChargeId
LEFT JOIN country cn4 ON cn4.id=cn1.Country
LEFT JOIN sub_campaigns cn6 ON cn6.id=cn1.subCampaignId
LEFT JOIN campaigns cn7 ON cn7.id=cn1.campaignId
LEFT JOIN customer_balance bal ON bal.customerId=cn1.`id`
LEFT JOIN (SELECT id, GROUP_CONCAT(CONCAT('-CardNum:', cardNum, '-CardType:', ccType) SEPARATOR ', ') AS cc_info FROM creditcard_users WHERE STATUS='active' GROUP BY id) cc ON cc.id=c.id
LEFT JOIN (SELECT id, GROUP_CONCAT(CONCAT('-ClearedBy:', ClearedBy) SEPARATOR ', ') AS ClearedBy_info FROM customers_deposit WHERE STATUS='approved' AND paymentmethod != 'Bonus'
	AND paymentmethod != 'Wallet1' AND paymentmethod != 'Payoneer'  GROUP BY id) clear ON clear.id=c.id;
...
Рейтинг: 0 / 0
23.03.2015, 10:31:06
    #38912891
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
AreostarВ чём делов том, что
Код: plaintext
View's SELECT contains a subquery in the FROM clause
Areostarи как поправить?А вот тут хз как его переписать без подзапросов. Полагаю, ответ "не делать вью из запроса, из которого вью сделать нельзя" вас не устроит? :)
...
Рейтинг: 0 / 0
23.03.2015, 10:32:37
    #38912892
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
Оформи подзапрос как самостоятельный вьюв.
...
Рейтинг: 0 / 0
23.03.2015, 10:39:18
    #38912907
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
AkinaОформи подзапрос как самостоятельный вьюв.

До этого и сам докарался! не делать несколько вью не подойдёт(или можно их тором обьядинить или включить друг в друга???)

видемо придётся допытываться что там именно надо сделатьи там думать дальше!!

в краёнем случае оформить как процедуру
...
Рейтинг: 0 / 0
23.03.2015, 11:19:55
    #38912959
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
Это он на каком языке сказал?
...
Рейтинг: 0 / 0
23.03.2015, 11:29:26
    #38912971
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
AkinaЭто он на каком языке сказал?

Мысли вслух(а мысли пока не улеглись)! :-)))

Пойду выяснять что именно надо в запросе делать
...
Рейтинг: 0 / 0
23.03.2015, 11:47:13
    #38912994
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
Areostar,

Я бы вообще не рекомендовал пользоваться VIEW, да еще таким сложным, если быстродействие хоть в малейшей степени волнует.
...
Рейтинг: 0 / 0
23.03.2015, 12:39:05
    #38913162
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
miksoftAreostar,

Я бы вообще не рекомендовал пользоваться VIEW, да еще таким сложным, если быстродействие хоть в малейшей степени волнует.

Присоединяюсь.
...
Рейтинг: 0 / 0
23.03.2015, 12:51:55
    #38913211
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
miksoftAreostar,

Я бы вообще не рекомендовал пользоваться VIEW, да еще таким сложным, если быстродействие хоть в малейшей степени волнует.

a чем пользоваться если нужно инфу из сногих таблиц вынуть????
...
Рейтинг: 0 / 0
23.03.2015, 12:58:11
    #38913231
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
AreostarmiksoftAreostar,

Я бы вообще не рекомендовал пользоваться VIEW, да еще таким сложным, если быстродействие хоть в малейшей степени волнует.

a чем пользоваться если нужно инфу из сногих таблиц вынуть????SQL-запросами.
...
Рейтинг: 0 / 0
23.03.2015, 13:28:03
    #38913322
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
miksoftAreostarпропущено...


a чем пользоваться если нужно инфу из сногих таблиц вынуть????SQL-запросами.как вариант, обёрнутыми в процедуры
...
Рейтинг: 0 / 0
26.03.2015, 14:07:00
    #38917708
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сделать View из запроса
у тебя запрос вида....

select поля, выборка для заданого айди, выборка2 для заданого айди

from таблицы, подзапрос который для каждого айди создаст агрегированные данные


переделать без вложеностей - да нефиг делать
вмето подзапросов, просто джоинить таблицу и групировать в общем запроссе.

тоесть вместо

select u.*,n.total_info
from user u join
(select user_id as id, group_concat(info) as 'total_info' from user_info group by user_id) n
on (n.id = u.id)


select u.id,u....,group_concat(i.info) as 'total_info'
from user u join user_info i on (i.user_id = u.id)

group by u.id,......

но в целом согласен - смущает сложность запроса. всёли там нужно!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сделать View из запроса / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]