SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.09.2013 03:44:24

dos32
Участник
Зарегистрирован: 06.02.2012
Сообщений: 13

права select на mysql при JOIN

сейчас переносил базу новую с отладочной машины на реальный виртуальный хостинг, соответственно юзер там один по умолчанию.

есть там процедура хранимая с большим динамическим кодом ... и вдруг она мне выдает, что selec denied for user мой-ip для таблицы shop2.off_stockstatus, причем отдельно select для нее исполняется без проблем, листаю ее

эта таблица приделана к запросу так :
INNER JOIN shop2.off_stockstatus
ON off_tovar.STOCKSTATUS = off_stockstatus.stockstatus_id

долго думал ... думать плохо так как доолгий динамический код строится, ненаглядно, потом убрал inner join и засунул в условие вместо join в where, может и некрасиво, но

where off_tovar.STOCKSTATUS = off_stockstatus.stockstatus_id and ... и т.д.

заработало... теперь нефига не понимаю. в других процедурах вроде как JOIN есть, все работает, какого черта ей тут если через JOIN то прав на select не хватает, а если через WHERE то хватает ....

видать спать пора. буду благодарен если кто мысль подкинет, так-то оно и через where работает, но таки понять охота. и ведь зараза единственная ХП во всей базе где запрос динамичеси пишется, так сразу не побаловаться с кодом чтоб наглядно.

.... так, в общем сделал фгагмент из динамического кода для теста ,то есть допустим даже коротко если так :


SELECT off_tovar.TOVAR_ID  
       , off_tovar.ARTIKUL  
       , off_tovar.TOVAR_NAME  
       , CEILING(off_tovar.PRICE_ROZN) as PRICE_ROZN  
       , off_contragents.SKIDKA_OUT as userskidka  
       #, off_tovar.SKIDKA as tovskidka  
       , if(off_tovar.SKIDKA>off_contragents.SKIDKA_OUT,off_tovar.SKIDKA,off_contragents.SKIDKA_OUT) as resultskidka  
       ,CEILING(off_tovar.PRICE_ROZN*(1-( (if(off_tovar.SKIDKA>off_contragents.SKIDKA_OUT,off_tovar.SKIDKA,off_contragents.SKIDKA_OUT))  /100))) as resultprice  
       #, off_tovar.WARRANT  
       , off_stockstatus.stockstatus_name  
  FROM  
    off_contragents, off_tovar  
  INNER JOIN shop2.off_stockstatus  
  ON off_tovar.STOCKSTATUS = off_stockstatus.stockstatus_id
  where off_contragents.USER_ID =0  
  and off_tovar.stockstatus>0



то выполняя его в DBFORGE вижу:
SQL.sql: Ошибка: (1,1): SELECT command denied to user 'taratata'@'111-111-111-111.broadband.corbina.ru' for table 'off_stockstatus'

а ежели пишу без join, перенеся его первым условием в WHERE

SELECT off_tovar.TOVAR_ID  
       , off_tovar.ARTIKUL  
       , off_tovar.TOVAR_NAME  
       , CEILING(off_tovar.PRICE_ROZN) as PRICE_ROZN  
       , off_contragents.SKIDKA_OUT as userskidka  
       #, off_tovar.SKIDKA as tovskidka  
       , if(off_tovar.SKIDKA>off_contragents.SKIDKA_OUT,off_tovar.SKIDKA,off_contragents.SKIDKA_OUT) as resultskidka  
       ,CEILING(off_tovar.PRICE_ROZN*(1-( (if(off_tovar.SKIDKA>off_contragents.SKIDKA_OUT,off_tovar.SKIDKA,off_contragents.SKIDKA_OUT))  /100))) as resultprice  
       #, off_tovar.WARRANT  
       , off_stockstatus.stockstatus_name  
  FROM  
    off_contragents, off_tovar, off_stockstatus  
   
  where off_tovar.STOCKSTATUS = off_stockstatus.stockstatus_id AND off_contragents.USER_ID =0  
  and off_tovar.stockstatus>0



то все зашибись ....

в чем прикол с нехваткой права на select к таблице которая в JOIN не пойму ... а так так это хостинг то нерешаемо.

причем рядом работаю скрипты с джойнами, типа такого :

FROM  
    off_tovar  
  LEFT OUTER JOIN off_groups  
  ON off_tovar.GRP_ID = off_groups.GRP_ID  
  LEFT OUTER JOIN off_subgrp  
  ON off_tovar.SUBGRP_ID = off_subgrp.SUBGRP_ID  
  WHERE  
    off_tovar.IN_PRICE = 1  
    AND off_groups.NO_PUBLISH = 0  
    AND off_groups.GRP_ID = pGrpId  
  GROUP BY



и хоть-бы хны ...

Неактивен

 

#2 10.09.2013 03:58:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: права select на mysql при JOIN

в случае join  увас shop2.off_stockstatus
а для where - off_stockstatus

Неактивен

 

#3 10.09.2013 04:31:56

dos32
Участник
Зарегистрирован: 06.02.2012
Сообщений: 13

Re: права select на mysql при JOIN

СПАСИБО !!! вот уж точно спать пора, теперь пойду с чистой совестью ... вот своим глазом я похоже хоть-ты тресни видел только что хотел smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson