Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MySQL: сортировка yes/no из строки
 
 автор: aexb   (16.03.2006 в 13:49)   письмо автору
 
 

Сразу приношу извинения за не совсем понятную формулировку темы :)

Собственно, сабж:
в базе существуют строки такого типа (сначала заголовки, ниже - данные в строке):

Заголовки: article_no | A0101 | A0102 | A0103 | A0104 | B0102 | T0102 | T0304 | T0106
Значения: 20056779 | yes | no | no | no | no | yes | yes | yes

То есть, это артикул товара (в магазине) и коды торговых мест, на которых он лежит (yes) или, соответственно, не лежит (no).

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

Программится это все на php.

Если не совсем понятно условие, то могу пояснить по ходу пьесы.

   
 
 автор: Loki   (16.03.2006 в 14:21)   письмо автору
 
   для: aexb   (16.03.2006 в 13:49)
 

если артикул - название столбца, то так:

SELECT * FROM table WHERE A0101='yes'

   
 
 автор: aexb   (16.03.2006 в 14:49)   письмо автору
 
   для: Loki   (16.03.2006 в 14:21)
 

хм.. это-то ясно. непонятно другое, каким образом для известного артикула выбрать ВСЕ ячейки строки, в которых для этого артикула указано значение 'yes'?

То есть, в итоге нужно получить список всех торговых мест, где находится данный артикул.

   
 
 автор: Loki   (16.03.2006 в 15:12)   письмо автору
 
   для: aexb   (16.03.2006 в 14:49)
 

средствами php - получив после запроса ассоциированный массив и прогнав его через foreach.
средствами mysql - не знаю как. надо изучать мануал. Может Trianon подскажет, но мне кажется что никак. В противном случае, у вас получается переменное количество столбцов в результате.

   
 
 автор: Trianon   (16.03.2006 в 15:48)   письмо автору
 
   для: aexb   (16.03.2006 в 14:49)
 

Loki всё правильно сказал:

<?
$res 
mysql_query("SELECT * FROM table WHERE article_no = $good") or die mysql_error();
$row mysql_fetch_array($resMYSQL_ASSOC);
$trades = array[];
foreach (
$row as => $trade => $present)
   if(
$present == 'yes'$tardes[] = $trade;
echo 
"<pre>" .print_r($trades); 
?>


Trianon бы переделал таблицу. Сделал бы ее из трех столбиков.
Номер_артикула|номер_точки|наличие_товара

article_no|trade_id|quantity

   
 
 автор: aexb   (16.03.2006 в 15:22)   письмо автору
 
   для: Loki   (16.03.2006 в 14:21)
 

да, только что догнал. в итоге, сначала получаем массив из всех заголовков, кроме 'article_no', делаем запрос в базу и получаем из нее строку с нужным артикулом. Затем в цикле прогоняем результат запроса по каждому заголовку из массива, сравниваем значение с 'yes' и, если оно удовлетворяет этому условию, добавляем в новый массив.

На выходе-массив с необходимыми значениями :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования