Запрос с сортировкой по алфавиту, но чтобы первым выбирались данные которые начинаются на букву «Л»

SergeyEremeev

Новичок
Запрос с сортировкой по алфавиту, но чтобы первым выбирались данные которые начинаются на букву «Л»

Есть табличка с названием shop_items в ней содержится все товары интернет магазина.
На данный момент запрос на выборку данных выглядит вот так:
PHP:
$result_tovar = mysql_query ("
SELECT 
shop_items.id, 
shop_items.name, 
shop_items.item_id,
shop_itemimages.filename,
shop_prices.value
FROM shop_items 
LEFT JOIN shop_prices ON shop_prices.item_id=shop_items.item_id
LEFT JOIN shop_itemimages ON shop_itemimages.item_id=shop_items.item_id
WHERE shop_items.parent_group_id='$group_id'

AND owner_id='0'


limit 0, 10
");
$myrow_tovar = mysql_fetch_assoc($result_tovar);
Необходимо выбрать данные так чтобы чтобы изначально вытаскивались те которые начинаются на букву «Л» а потом все остальные.
Помогите пожалуйста если кто в курсе как это реализовать)
 

Hello

Новичок
Код:
ORDER BY IF (shop_items.name >= 'Л', 0, 1)
 
Последнее редактирование:

SergeyEremeev

Новичок
Помогло но не совсем.
На страничке view_cat.php есть запрос куда я добавил вашу строку и туда первые 10 товаров действительно начинаются на "Л" но следующие 10 товаров подгружаются через второй запрос который обрабатывается через JS он визуально такой же как на view_cat.php но его обрабатывает JS.
Я туда тоже вставляю ваше условие а он не реагирует вообще.
Я думаю может из за руского символа "Л" ??? может такое быть?

Вот js файл:
PHP:
$(document).ready(function(){
	
	if($('body.cat').length>0){
		
		var oH,sT,wH,ab=true,params,model,str,rand;
		
		rand=5;
		
		wH=$(window).height();
		$(window).everyTime(250,'gtimer',function(){
			sT=$(window).scrollTop()+wH;
			oH=$('#wrapper_carkas').innerHeight();
			if(sT>=oH){	
				from+=parseInt(col);
				params='from='+from+'&col='+col+	'&gID='+group_id;
				$.ajax({
					url: '/ajax/load_goods.php',             // указываем URL и
					type: 'POST',
					data:params,
					dataType : "json",                     // тип загружаемых данных
					success: function (data) { // вешаем свой обработчик на функцию success
						if(data==0) $(window).stopTime('gtimer');
						$.each(data, function(i, val) {    // обрабатываем полученные данные
							str=val['title'];
							
							//str=str.toString();
							model='<div class="model"><a href="view_model.php?item_id='+val['item_id']+'"><img class="hover_img" width="200" height="300" src="http://corona-jeans.ru/1c/catalog/'+val['filename']+'?'+rand+'" alt="" title=""/></a><div class="ar"><p>'+str+'</p><p>Наличие: <span class="est_v_nali">ЕСТЬ В НАЛИЧИИ</span></p><p>Опт. цена: '+(r==1?'<a class="popup" rel="popuprel" href="#">показать</a>':'<span class="price_vc">'+val['price']+'</span>')+'</p></div></div>';
							$('#vitrina').append(model);
						});
					}              
				});
			}
		});
	}

	var that,t=true;
	$('#menu_left ul li ul li.active').parent().show();
	$('#menu_left ul li ul li.active').parent().parent().addClass('active');
	$('#menu_left ul li ul li.active').parent().parent().find('span b').text('-');
	$('#menu_left ul>li span').click(function(){
		if(t){
			that=$(this).parent();
			t=false;
			if(!that.hasClass('active')){
				$(this).find('b').text('-');
				that.find('ul').slideDown(function(){
					that.addClass('active');
					t=true;
				});
			} else {
				$(this).find('b').text('+');
				that.find('ul').slideUp(function(){
					that.removeClass('active');
					t=true;
				});
			}
		}
	});
});

function getRandom(min, max) {
  return Math.random() * (max - min) + min;
}
а вот исходный файла /ajax/load_goods.php':
PHP:
<?
	if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])&&($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')){
		include("../block/bd.php");
		
		function getMinPriceById($id)
		{
			$t=mysql_query("
				SELECT 
					MIN(shop_prices.value) as value,
					shop_itemimages.filename  
				FROM 
					shop_prices 
					INNER JOIN shop_items ON shop_items.item_id=shop_prices.item_id 
					LEFT JOIN shop_itemimages ON shop_itemimages.item_id=shop_prices.item_id
				WHERE 
					shop_items.owner_id='$id'
				
					");
			if(mysql_num_rows($t))
			{
				$result=mysql_fetch_array($t);
				return $result;
			} 
				else return false;
		}
		

		
		$from=trim($_POST['from']);
		$col=$_POST['col'];
		$group_id=$_POST['gID'];
		$sql=mysql_query("
			SELECT 
			shop_items.id, 
			shop_items.name as title, 
			shop_items.item_id,
			shop_itemimages.filename,
			shop_prices.value as price
			FROM shop_items 
			LEFT JOIN shop_prices ON shop_prices.item_id=shop_items.item_id
			LEFT JOIN shop_itemimages ON shop_itemimages.item_id=shop_items.item_id
			WHERE shop_items.parent_group_id='$group_id' 
			AND owner_id='0' 
			ORDER BY IF (shop_items.name >= 'л', 0, 1)
			LIMIT ".$from.", ".$col."
		");
		if(mysql_num_rows($sql)>0){
		while($tmp=mysql_fetch_assoc($sql)){
			
		if  ($tmp["filename"] =="")
		{
		$tmp["filename"]='netfoto.jpg';
		}	
			
				if((trim($tmp["price"])=='')||($tmp["filename"]=='')) {
					$arr=getMinPriceById($tmp["item_id"]);
					$tmp["price"]=$arr['value'];
					$tmp["filename"]=$arr['filename'];
				}
				//$tmp["title"]=iconv('WINDOWS-1251','UTF-8',$tmp["title"]);
				$result[]=$tmp;
			}
			echo json_encode($result);
		} else echo 0;
	}
?>
 

SergeyEremeev

Новичок
Немогу заставить работать ваше условие во втором запросе "ORDER BY IF (shop_items.name >= 'Л', 0, 1)"
В этом запросе оно работает:
PHP:
$result_tovar = mysql_query ("
SELECT 
shop_items.id, 
shop_items.name, 
shop_items.item_id,
shop_itemimages.filename,
shop_prices.value
FROM shop_items 
LEFT JOIN shop_prices ON shop_prices.item_id=shop_items.item_id
LEFT JOIN shop_itemimages ON shop_itemimages.item_id=shop_items.item_id
WHERE shop_items.parent_group_id='$group_id' AND owner_id='0'
ORDER BY IF (shop_items.name >= 'л', 0, 1)
limit 0, 10
");
$myrow_tovar = mysql_fetch_assoc($result_tovar);
А вот в этом почему-то не хочет:
PHP:
		$sql=mysql_query("
			SELECT 
			shop_items.id, 
			shop_items.name as title, 
			shop_items.item_id,
			shop_itemimages.filename,
			shop_prices.value as price
			FROM shop_items 

			LEFT JOIN shop_prices ON shop_prices.item_id=shop_items.item_id
			LEFT JOIN shop_itemimages ON shop_itemimages.item_id=shop_items.item_id

			
			WHERE shop_items.parent_group_id='$group_id' 
			AND owner_id='0'
			ORDER BY IF (shop_items.name >= 'л', 0, 1)
			
			LIMIT ".$from.", ".$col."
		");
Решить проблему немогу самостоятельно....
 

prolis

Новичок
телепат проснулся и говорит:
$from и $col не определены на момент формирования запроса
/телепат ушел спать
http://phpfaq.ru/debug
 

Вурдалак

Продвинутый новичок
Вообще почему
Код:
IF (shop_items.name >= 'Л', 0, 1)
? Должно быть типа
Код:
IF (MID(shop_items.name, 1, 1) = 'Л', 0, 1)
 
Сверху