Проблемы с SQL и PHP - только первая категория - PullRequest
0 голосов
/ 17 сентября 2011

У меня проблема с вызовом некоторых данных из базы данных ...

У меня есть обычные данные, которые имеют для каждого продукта только 1 идентификатор, но у меня есть таблица категорий для продуктов с одинаковым идентификатором дважды ибольше, потому что товар может быть в нескольких категориях.У меня есть запрос, который вызывает данные, но я не знаю, как выбрать только первую категорию в таблице категорий.

Например, таблица:

product_id    |    category_id
2             |  31
2             |  12
2             |  31
3             |  14
3             |  38
4             |  10

Этот запрос Iиспользуйте для вызова других данных:

SELECT toc_products.products_id, 
       toc_products_description.products_name, 
       toc_products.manufacturers_id, 
       toc_products.products_price, 
       toc_products_description.products_url, 
       toc_manufacturers.manufacturers_id, 
       toc_manufacturers.manufacturers_name 
FROM   toc_products, 
       toc_products_description, 
       toc_manufacturers 
WHERE  toc_products.products_id = toc_products_description.products_id 
       AND toc_products.manufacturers_id = toc_manufacturers.manufacturers_id 
       AND toc_products_description.language_id = 14 
ORDER  BY toc_products.products_id 

Так что мне нужно все это, чтобы позвонить в то время, пока у меня есть только это:

    while($red = mysql_fetch_array($rezultat)){
    if ($red['products_quantity'] = 0) {$red['products_quantity'] = 'Nicht lagernd';}
    else {$red['products_quantity'] = 'Lagernd';}

    echo $red['products_id']. ", ". $red['products_name']. ", ". $red['products_price']. ", ". $red['manufacturers_name']. ", ". $red['products_url'];
    echo "<br />";
}

Есть ли способ позвонить взапросить только первое значение с идентификатором, когда следующий будет иметь тот же идентификатор, чтобы пропустить его ??

Пожалуйста, помогите, и извините за мой английский ... Спасибо

Ответы [ 2 ]

0 голосов
/ 17 сентября 2011

у вас есть в основном 3 варианта.

первый - выбрать идентификатор категории в вашем sql и порядок по нему.Собственно ваш заказ по 1) товару и 2) категории.Затем вы можете проверить в php, изменился ли он, вот так.

$oldCategory = null;
while($red = mysql_fetch_array($rezultat))
{
    if ( $oldCategory != $red['category'] )
    {
    if ($red['products_quantity'] = 0) $red['products_quantity'] = 'Nicht lagernd';
    else $red['products_quantity'] = 'Lagernd';

    echo $red['products_id'], ", ", $red['products_name'], ", ", $red['products_price'], ", ", $red['manufacturers_name'], ", ", $red['products_url'];
    echo "<br />";
    }
    $oldCategory = $red['category'];
}

второй: вы не меняете свой sql и можете создать функцию php, которая извлекает категорию из базы данных для каждого продукта.

третий: вы делаете это в чистом sql.удачи.

0 голосов
/ 17 сентября 2011

Просто добавьте GROUP BY category_id в конец вашего заявления

SELECT toc_products.products_id, 
       toc_products_description.products_name, 
       toc_products.manufacturers_id, 
       toc_products.products_price, 
       toc_products_description.products_url, 
       toc_manufacturers.manufacturers_id, 
       toc_manufacturers.manufacturers_name 
FROM   toc_products, 
       toc_products_description, 
       toc_manufacturers 
WHERE  toc_products.products_id = toc_products_description.products_id 
       AND toc_products.manufacturers_id = toc_manufacturers.manufacturers_id 
       AND toc_products_description.language_id = 14 
ORDER  BY toc_products.products_id
GROUP BY category_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...