powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сделать View из запроса
12 сообщений из 12, страница 1 из 1
Сделать View из запроса
    #38912857
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имеется звапрос(не мой). Пытаюсь сделать из него 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
Сделать View из запроса
    #38912891
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AreostarВ чём делов том, что
Код: plaintext
View's SELECT contains a subquery in the FROM clause
Areostarи как поправить?А вот тут хз как его переписать без подзапросов. Полагаю, ответ "не делать вью из запроса, из которого вью сделать нельзя" вас не устроит? :)
...
Рейтинг: 0 / 0
Сделать View из запроса
    #38912892
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оформи подзапрос как самостоятельный вьюв.
...
Рейтинг: 0 / 0
Сделать View из запроса
    #38912907
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaОформи подзапрос как самостоятельный вьюв.

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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