Задавайте вопросы, мы ответим
Вы не зашли.
привет всем. я не програмист, просто вышло так, что я хочу кое-что сделать и для етого мне нужен SQL.
начну с самого начала. есть скрипт написанны на ПХП но нет базы. я начал восстановления. если ругался на нет такой таблицы я просто создавал, если ругался на нет столбца я его создавал, но просто тип задавал ТЕКСТ.
и так, после етого когда я востановил базы стал ругатса
select u.Email,u.Login,u.Icq,u.Url,u.BirthDate, u.UserID, Users(' ',u.TrStatus, ' ') as TrStatus, u.Study,u.Work,u.Info,u.Hobby, u.Games,u.Users,u.Club,u.Music, u.City,c.Name_rus as Country, s1.Name_rus as SocialStatus, s2.Name_rus as Internet, s3.Name_rus as Education, s4.Name_rus as Occupation, TeamAll(u.UserID,1,'rus') as Teams, ManagerRang(u.UserID,concat(concat_ws(' ',u.FirstName,u.LastName),' (',u.Login,')'),u.Rang) as User from ut_users u left outer join ut_countries c on c.CountryID=u.CountryID left outer join an_socialstatus s1 on s1.TypeID=u.SocialStatus left outer join an_internet s2 on s2.TypeID=u.Internet left outer join an_education s3 on s3.TypeID=u.Education left outer join an_occupation s4 on s4.TypeID=u.Occupation where u.UserID='4013'
FUNCTION aka.Users does not exist
после етого, я с помощю Navicatа создал функцию Users.
BEGIN
RETURN '';
END
вот так она выглядет.
после етого выдаёт ошибку
Warning: mysql_query() [function.mysql-query]: Unable to save result set in L:\home\nekki.ge\www\cls\common\cls_db.php on line 282
select u.Email,u.Login,u.Icq,u.Url,u.BirthDate, u.UserID, Users(' ',u.TrStatus, ' ') as TrStatus, u.Study,u.Work,u.Info,u.Hobby, u.Games,u.Users,u.Club,u.Music, u.City,c.Name_rus as Country, s1.Name_rus as SocialStatus, s2.Name_rus as Internet, s3.Name_rus as Education, s4.Name_rus as Occupation, TeamAll(u.UserID,1,'rus') as Teams, ManagerRang(u.UserID,concat(concat_ws(' ',u.FirstName,u.LastName),' (',u.Login,')'),u.Rang) as User from ut_users u left outer join ut_countries c on c.CountryID=u.CountryID left outer join an_socialstatus s1 on s1.TypeID=u.SocialStatus left outer join an_internet s2 on s2.TypeID=u.Internet left outer join an_education s3 on s3.TypeID=u.Education left outer join an_occupation s4 on s4.TypeID=u.Occupation where u.UserID='4013'
Incorrect number of arguments for FUNCTION aka.Users; expected 1, got 3
Отредактированно Mpa4Hu (25.02.2010 20:16:25)
Неактивен
Ну да, у функции должно быть три аргумента, а не один.
Лучше не пытайтесь подобрать базу под сценарий Тем более — с хранимым
кодом
Неактивен
не кто нечего больше неможет предложыть кроме как не делать етого?
Неактивен
Вы можете создать функцию Users с тремя аргументами.
Только непонятен смысл, ведь вы не знаете что должна делать эта функция и узнать это не представляется возможным.
Неактивен
даже если уменя есть весь движок, я немогу узнать что далжна делать ето функцыя?
Неактивен
Попробуйте? )
Неактивен
Смотря, что вы подразумеваете под движком. По идее, должны быть инсталяционные скрипты, которые создают базу, включая хранимый код.
Как я понимаю в вашем случае их нет. Остаются след варианты:
1) посмотреть в документации,если таковая есть
2) спросить на сайте разраблтчиков (или у других пользователей данного движка), если он распространен
3) по имени функции и входным параметрам угадать что она должна делать
Неактивен
спасибо всем, кто написал.
уменя ище вторая проблема
select concat('',u.FirstName,' ',u.LastName,''), concat('',t.Name_rus,'') from tm_rating r join ut_teams t using(TeamID) join ut_users u using(UserID) order by Power11_all limit 0,5
Column 'UserID' in from clause is ambiguous
как я понел, есть три базы (tm_rating, ut_teams и ut_users) в которых есть столб UserID, и скрипть не понимает откуда брать
Отредактированно Mpa4Hu (26.02.2010 18:37:42)
Неактивен
Да, впишите условие явно: ON a.UserID = b.UserID.
Неактивен
paulus написал:
Да, впишите условие явно: ON a.UserID = b.UserID.
спасибо за ответ.
как я уже написал, я не програмист, я попытался подставить етот код. но где иммено я не понимаю. и мне интересно етот а. и б. условные и я должен подставить мои индекси? например если я хочу чтобы брал с ut_users (u.)
Отредактированно Mpa4Hu (26.02.2010 23:21:55)
Неактивен
Да. Вместо a и b вы должны писать свои алиасы, т.е. для таблицы ut_users - u.UserID.
Неактивен
Mpa4Hu написал:
мне интересно, если вместо а я подставлю мой алиас для таблицы ут_усерс (у.) то что тогда б (я пробовол подставить других алисаы но выдаёт ошибку. и вы не отвелили на вопрос куда вставлять етот код ))
Вместо using(UserID) нужно писать ON `алиас1`.UserID = `алиас2`.UserID.
Приведите ошибку, которую пишет при подстановке алиасов.
Неактивен
скрипт сичас виглядит так
from tm_rating r join ut_teams t using(TeamID) join ut_users u using ON r.UserID = u.UserID. order by Power11_all limit 0,5");
а ошибка вот так
select concat('',u.FirstName,' ',u.LastName,''), concat('',t.Name_rus,'') from tm_rating r join ut_teams t using(TeamID) join ut_users u using ON t.UserID = u.UserID. order by Power11_all limit 0,5
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON r.UserID = u.UserID. order by Power11_all limit 0,5' at line 4
Отредактированно Mpa4Hu (27.02.2010 00:22:25)
Неактивен
Вместо using(UserID) нужно писать ON `алиас1`.UserID = `алиас2`.UserID.
У вас получилось лишнее using, которое перед ON
Неактивен
спасибо болшьое.
есть вопрось, возможна ли создать в базе функцыю где будет говоритса что а.UserID = b.UserID. тут их много, но скрипт я как знаю не дирявый. проста базы нету. вот я и прецтавил, что возможна в бд прописать что-то что будет гаварить using(UserID) что а = б
Отредактированно Mpa4Hu (27.02.2010 00:43:38)
Неактивен
using(UserID) эквивалентно ON `алиас1`.UserID = `алиас2`.UserID
Это просто разные формы записи. Часто пишут using для того, чтобы код был короче.
Неактивен
такс, ковырясля в фаилах и нашел кое что
BEGIN
Declare game blob default null;
declare gam_md5key varchar(6) default "pobeda";
declare ord_md5key varchar(6) default "RULEZ";
declare fc_md5key varchar(6) default "HZ";
declare fc_ord blob default null;
set game=concat('GAM',CHAR(0x01000000));
set game=concat(game,
CHAR((SELECT id FROM `nekki-butsa`.en_0_255 order by rand() limit 1),
(SELECT id FROM `nekki-butsa`.en_0_255 order by rand() limit 1),
(SELECT id FROM `nekki-butsa`.en_0_255 order by rand() limit 1),
(SELECT id FROM `nekki-butsa`.en_0_255 order by rand() limit 1),
unix_timestamp()),
CHAR(LENGTH(CONVERT(in_country USING 'cp1251'))),CONVERT(in_country USING 'cp1251'),
CHAR(LENGTH(CONVERT(in_city USING 'cp1251'))),CONVERT(in_city USING 'cp1251'),
CHAR(LENGTH(CONVERT(in_stadium USING 'cp1251'))),CONVERT(in_stadium USING 'cp1251'),
(select @a:=REVERSE(CHAR(in_capacity))),REPEAT(unhex(00),4-LENGTH(@a)),
(select @b:=REVERSE(CHAR(in_visitors))),REPEAT(unhex(00),4-LENGTH(@b)),
CHAR(in_tickets),
(select @c:=REVERSE(CHAR(in_referee))),REPEAT(unhex(00),4-LENGTH(@c)),
CHAR(in_weather),
CHAR(in_temp),
CHAR(in_tour),
CONVERT(in_division USING 'cp1251'),
CHAR(coalesce(in_nomtour,0)),
if(In_Reglament=1,CHAR(1),if(In_CountGame=2 and ((in_tour-in_tour1)%2<>0),concat(CHAR(3),CHAR((select coalesce(Goals1,0) from ut_matches where ReglamentID=In_reglamentID and Tour=in_tour-1 and TeamID1=in_TeamID2)),CHAR((select coalesce(Goals2,0) from ut_matches where ReglamentID=In_reglamentID and Tour=in_tour-1 and TeamID1=in_TeamID2))),CHAR(0)) )
);
set game=concat(game,
CHAR(mod(LENGTH(in_fc1), 256)),CHAR(LENGTH(in_fc1) div 256),
CHAR(0x00),CHAR(0x00),in_fc1);
set fc_ord=in_ord1;
set game=concat(game,
CHAR(mod(LENGTH(coalesce(fc_ord,'')), 256)),CHAR(LENGTH(coalesce(fc_ord,'')) div 256),
CHAR(0x00),CHAR(0x00),coalesce(fc_ord,''));
set game=concat(game,
CHAR(mod(LENGTH(in_fc2), 256)),CHAR(LENGTH(in_fc2) div 256),
CHAR(0x00),CHAR(0x00),in_fc2);
set fc_ord=in_ord2;
set game=concat(game,
CHAR(mod(LENGTH(coalesce(fc_ord,'')), 256)),CHAR(LENGTH(coalesce(fc_ord,'')) div 256),
CHAR(0x00),CHAR(0x00),coalesce(fc_ord,''));
set game=concat(game,CHAR(0x0000000B),
(select @a:=REVERSE(CHAR( in_MatchID ))),REPEAT(unhex(00),4-LENGTH(@a)),
(select @b:=REVERSE(CHAR( in_TeamID1 ))),REPEAT(unhex(00),4-LENGTH(@b)),
(select @c:=REVERSE(CHAR( in_TeamID2 ))),REPEAT(unhex(00),4-LENGTH(@c))
);
set game=concat(md5(concat(game,gam_md5key)),game);
return game;
END
лижала просто в текстовом фаиле. но как создать ету функцыю, и как её назвать я незнаю
потом в ХМЛ фаиле нашол следущее
<create
sql="drop table ut_table;
#create table ut_table(select * from ((select h.TeamID1 as TeamID,
count(distinct h.MatchID) as HomeGames,
count(distinct g.MatchID) as GuestGames,
count(distinct h.MatchID) +
count(distinct g.MatchID) as Games,
sum(if(h.Goals1>h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeWin,
sum(if(h.Goals1<h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeLose,
sum(if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeTie,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeGoals1,
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeGoals2,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) -
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeDifference,
sum(if(h.Goals1>h.Goals2,1,0)*3+if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomePoints,
sum(if(g.Goals1<g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestWin,
sum(if(g.Goals1>g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestLose,
sum(if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestTie,
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestGoals2,
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestGoals1,
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) -
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestDifference,
sum(if(g.Goals1<g.Goals2,1,0)*3+if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestPoints,
sum(if(h.Goals1>h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1<g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Win,
sum(if(h.Goals1<h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1>g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Lose,
sum(if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Tie,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Goals1,
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Goals2,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) -
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) +
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) -
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Difference,
sum(if(h.Goals1>h.Goals2,1,0)*3+if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1<g.Goals2,1,0)*3+if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Points
from ut_matches h
left outer join
ut_matches g
on (h.TeamID1=g.TeamID2 and h.Type=g.Type and h.Type='champ')
where h.Type='champ'
group by h.TeamID1,g.TeamID2
)
union
(select g.TeamID2 as TeamID,
count(distinct h.MatchID) as HomeGames,
count(distinct g.MatchID) as GuestGames,
count(distinct h.MatchID) +
count(distinct g.MatchID) as Games,
sum(if(h.Goals1>h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeWin,
sum(if(h.Goals1<h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeLose,
sum(if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeTie,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeGoals1,
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeGoals2,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) -
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomeDifference,
sum(if(h.Goals1>h.Goals2,1,0)*3+if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) as HomePoints,
sum(if(g.Goals1<g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestWin,
sum(if(g.Goals1>g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestLose,
sum(if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestTie,
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestGoals2,
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestGoals1,
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) -
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestDifference,
sum(if(g.Goals1<g.Goals2,1,0)*3+if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as GuestPoints,
sum(if(h.Goals1>h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1<g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Win,
sum(if(h.Goals1<h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1>g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Lose,
sum(if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Tie,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Goals1,
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Goals2,
sum(h.Goals1)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) -
sum(h.Goals2)/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID)) +
sum(g.Goals1)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) -
sum(g.Goals2)/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Difference,
sum(if(h.Goals1>h.Goals2,1,0)*3+if(h.Goals1=h.Goals2,1,0))/if(count(distinct g.MatchID)=0,1,count(distinct g.MatchID))+
sum(if(g.Goals1<g.Goals2,1,0)*3+if(g.Goals1=g.Goals2,1,0))/if(count(distinct h.MatchID)=0,1,count(distinct h.MatchID)) as Points
from ut_matches g
left outer join
ut_matches h
on (h.TeamID1 is null and h.Type=g.Type and h.Type='champ')
where h.Type='champ'
group by g.TeamID2,h.TeamID1 )) as s
group by s.TeamID
order by s.Points desc)
"
success_rus="Запись создана"
success_eng="Record created">
</create>
как я понел ето тоже функцыя, но когда я ето копирую в Пхпмайадмин, выдаёт ощибки и не создаёт.
Отредактированно Mpa4Hu (28.02.2010 18:43:41)
Неактивен
# перед create удалите.
Неактивен
Ну и хвост запроса нужно добавить. Где-то что-то обрезалось неудачно.
Неактивен
ктонибудь может взятса за ето за денги?
мне нужно токо востановления функции. я нашёл 16 запросов.
если да то пишытье свои предложения
Неактивен
select u.Email,u.Login,u.Icq,u.Url,u.BirthDate, u.UserID, concat(' ',u.TrStatus, ' ') as TrStatus, u.Study,u.Work,u.Info,u.Hobby, u.Games,u.Player,u.Club,u.Music, u.City,c.Name_rus as Country, s1.Name_rus as SocialStatus, s2.Name_rus as Internet, s3.Name_rus as Education, s4.Name_rus as Occupation, u.UserID,1,'rus') as Teams, ManagerRang(u.UserID,concat(concat_ws(' ',u.FirstName,u.LastName),' (',u.Login,')'),u.Rang) as User from ut_users u left outer join ut_countries c on c.CountryID=u.CountryID left outer join an_socialstatus s1 on s1.TypeID=u.SocialStatus left outer join an_internet s2 on s2.TypeID=u.Internet left outer join an_education s3 on s3.TypeID=u.Education left outer join an_occupation s4 on s4.TypeID=u.Occupation where u.UserID='4013'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') as Teams, ManagerRang(u.UserID,concat(concat_ws(' ',u.FirstName,u.LastName),' ' at line 1
Неактивен
Да, плохой запрос
Даже сложно сказать, откуда он такой страшный. Скобки расставлены
в нем в произвольном порядке, что окончательно сводит с ума как
парсер MySQL, так и мою голову. В таком виде запрос не несет смысла
и я даже предположить не могу, какой смысл в него пытался вложить
автор.
Неактивен
привет всем)
Error
insert into fn_accounts values(@Money,@LeagueID,2)
Column count doesn't match value count at row 1
приблизительно так выглядет запрос:
insert into fn_accounts values(@Money;,@LeagueID;,2)
в базе 4 столбика, а тут уменя 3 запроса, когда я добавляю перед Монеу кавичтки всё окей, но таких запросов много, и в большинства из них 50 столбов. можна переделать или чтонибуь сделать так чтобы количесва столбов не зависило от запрса (или както так )) )
Неактивен
Нет, ничего поделать нельзя. Если у Вас таблицы заполняются такими запросами,
то в них нельзя добавлять колонки. Единственный правильный способ — заиметь
таблицу с правильным количеством (а главное — качеством) колонок. Важно, чтобы
первая колонка имела отношение к деньгам, вторая — к идентификатору лиги, а
про третью можно сказать только то, что в нее можно засунуть два… советую Вам
все же не мучать этот сценарий, все равно он не работает…
Неактивен