2013-11-12 3 views
0

У меня есть таблица под названием «цена», в которой так много полей, включая «дистрибьютор» и «версия». Поле дистрибьютора - это идентификатор из таблицы дистрибьютора. Каждый дистрибьютор имеет разные версии. Версии, такие как: 20131109AV-V1,20131110AV-V2,20131112AV-V3 являются версиями для распределителя = 1 И 20131111WC-V1,20131111WC-V2 являются версиями для дистрибьютора = 2 и т. Д. Мне нужно выбрать все данные из где версия равна последней версии каждого дистрибьютора.Как выбрать из db, где поле версии является последним

Например: 20131112AV-V3 является последней версией распределителя = 1 20131111WC-V2 является последней версией распределителя = 2

Могу ли я сделать запрос в одном шаге?

Или мне нужно запросить часть по частям, как, сначала выберите дистрибьютора и версию, затем пройдите через таблицу, используя дистрибьютор и последнюю версию (код приведен ниже :)?

$all_distributors=mysql_query("SELECT `distributor`,MAX(`version`) as `version` FROM `pricing` GROUP BY `distributor`",$con); 
while($all_dist= mysql_fetch_array($all_distributors)) 
{ 
    $latest_version=$all_dist['version']; 
    $distributor=$all_dist['distributor']; 
    echo $distributor."-".$latest_version."<br/>"; 
     //Again select the query using this $distributor & $latest_version 

} 

Любая идея?

Спасибо!

ответ

1

вы можете использовать один запрос для этого:

SELECT p.* 
FROM pricing p 
    JOIN 
     (
      SELECT distributor, MAX(version) AS ver 
      FROM pricing 
      GROUP BY distributor 
     ) mx ON mx.ver = p.version AND p.distributor = mx.distributor 
+1

Спасибо за ваш ответ! – NewPHP

+0

добро пожаловать! accept + upvote всегда лучший ответ :-) – Sebas

Смежные вопросы