Оптимизировать запрос? и конкатенация

Twister0Fx

Новичок
Добрый день!
Заодно и задам такой вопрос: подскажите можно ли оптимизировать данный запрос? или все ли отлично здесь....
PHP:
	$this->strSql = "SELECT `t`.`idPreparat` , `t`.`idForma` , `t`.`idDozirovka` , `p`.`Prep` , `f`.`Frm` , `d`.`doz` , `p`.`Reactant` , `p`.`Recipe` , min( `s`.`Price` ) `min_price` , max( `s`.`Price` ) `max_price` , count( `a`.`id` ) `apt`
FROM (
(
`Stock` `s`
INNER JOIN (
`Preparat` `p`
INNER JOIN (
`Forma` `f`
INNER JOIN (
`Dozirovka` `d`
INNER JOIN `Tovar` `t` ON `d`.`id` = `t`.`idDozirovka`
) ON `f`.`id` = `t`.`idForma`
) ON `p`.`id` = `t`.`idPreparat`
) ON `s`.`idTovar` = `t`.`id`
)
INNER JOIN `Apteki` `a` ON `s`.`idApteki` = `a`.`id`
)
INNER JOIN `City` `c` ON `a`.`idCity` = `c`.`id`
WHERE `Prep` LIKE '$this->preparate%'
AND `c`.`id` = '".$this->city."'
AND `p`.`Category`
IN (
'".$this->category."'
)
GROUP BY `t`.`idPreparat` , `t`.`idForma` , `t`.`idDozirovka`
LIMIT 0 , 50";
далее мне нужно:
PHP:
$rs_lim = mysql_query($this->strSql."limit 1,20"); 
//нужно сделать конкатенацию, но выводит ошибку типо в mysql_fetch_assoc поступил bool, без limit 1,20 все работает норм
while($this->row = mysql_fetch_assoc($rs_lim)){}
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Все просто круто, если не считать убогое форматирование, дырки в SQL, неверный формат запроса из-за конкатенации и общую нечитаемость
 

Twister0Fx

Новичок
спасибо за ответ
я все дырки, то что знаю обрабатываю?)
у меня каждая переменная обрабатывается, прежде чем вставить ее в запрос)
сам пробывал во все входные данные ставить все возможные варианты - полет норм....
возможно в дальнейшем, когда освою PDO или плейсхолдер буду использовать их.....
а как сделать конкатенацию правильно?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ты перед тем как пихать запрос в mysql_query выведи его на экран и посмотри. У тебя там будет 2 набора limit. Ну вот исходя из этого и смотри, как тебе удобней собирать строку. Либо конкатенировать, либо запихнуть части запроса в массив, а потом сделать ему join
 

Twister0Fx

Новичок
плин, как раньше не заметил) у меня просто три запроса есть, в одном сделаны `` косые кавычки
а в других я не делал, и поэтому название столбца таблицы слилось со словом limit 1,2
поставил `` - все стало нормально
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А я думал, я видел все. Оказалось, ошибался.

У тебя запрос на конце будет иметь вид:
...LIMIT 0 , 50limit 1,20

Это ты считаешь нормальным?
 

Twister0Fx

Новичок
а я думаю про какой два limit вы говорите...
это просто с phpmyadmin подставляет автоматом limit - я код откуда скопировал
на самом деле у меня там LIMIT 0 , 50 нету)
сам не внимательно написал пример, сори
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Переменные тоже PMA подставляет сам?) Да и по дефолту у PMA лимит в 30 записей, вроде бы)
 
Сверху