За последние 24 часа нас посетили 15117 программистов и 1681 робот. Сейчас ищут 853 программиста ...

Массив для перевода числового значение в текстовое

Тема в разделе "PHP для новичков", создана пользователем rolph, 10 июн 2010.

  1. rolph

    rolph Активный пользователь

    С нами с:
    15 янв 2007
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Москва
    Есть 2 таблицы БД.

    В 1ой таблице город выдается в формате числа(id)
    Во 2ой таблице расшифровка этого id названием (name)

    Значения из 1ой таблицы:
    PHP:
    1. while ($row1=mysql_fetch_array($q1))
    2. {
    3. echo '<tr><td>'.$row1['town'].'</td><td>'.$row1['cnt'].'</td></tr>';
    4. }
    5.  
    $row1['town'] - выводит номер города

    PHP:
    1.     while ($row=mysql_fetch_array($q2))
    2.             {
    3.              $sort_array[] = array (
    4.                     'id' => $row['id']
    5.                     'town' => $row['name']);
    6.             }
    из второй таблицы засовываю в массив.

    Никак не могу понять, как сделать, чтобы при такой, например схеме:
    PHP:
    1. $sort_array[$row1['town']]
    выводилось вместо числа - название города
     
  2. WildZero

    WildZero Активный пользователь

    С нами с:
    24 фев 2010
    Сообщения:
    242
    Симпатии:
    0
    Адрес:
    Пермь
    Вроде как-то так:
    PHP:
    1. <?php
    2. $i=0;
    3.  while ($row=mysql_fetch_array($q2))
    4.              {
    5.              $sort_array[$i] = array (
    6.                      'id' => $row['id']
    7.                      'town' => $row['name']);
    8.               $i++;
    9.              }
    10. ?>
     
  3. rolph

    rolph Активный пользователь

    С нами с:
    15 янв 2007
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Москва
    У меня id города не по порядку...

    Попробовал $sort_array[$row['id']] = $row['name'];

    почему-то не работает
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1)А зачем? Может лучше все делать в запросе чем в php?
    2)Но если очень хочется:
    Код (Text):
    1. $sort_array[$row['id']] = $row['name']
     
  5. rolph

    rolph Активный пользователь

    С нами с:
    15 янв 2007
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Москва
    Подскажите, как сделать одним запросом.

    Вариант 2 - заработал
     
  6. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Смотрите в сторону join.
     
  7. rolph

    rolph Активный пользователь

    С нами с:
    15 янв 2007
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Москва
    Спасибо... вопрос решил с помощью join
     
  8. Scorpius

    Scorpius Активный пользователь

    С нами с:
    6 май 2010
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    там уже нет
    Оффтоп:
    Зачем вообще join нужен, я не понимаю. Я все мультитабличные запросы без него делаю
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Scorpius
    Каким образом?
     
  10. Scorpius

    Scorpius Активный пользователь

    С нами с:
    6 май 2010
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    там уже нет
    Например, так:
    Есть 2 таблицы товары и категории товаров:
    Items:
    id|name|description|price|category_id
    --------------------------------------------
    1|Ford|good car|1000|1
    2|Boch|good telephone|500|2
    ....
    Categories:
    id|name|description
    -----------------------
    1|Transport|Cars,helicopters...
    2|Domestic technique|Iron,microvawes...
    ...
    Ну, и допустим надо достать товары и их категории. Делаем так:

    [sql]
    SELECT i.name,i.description,i.price,c.name FROM Items i,Categories WHERE c.id=c.category_id
    [/sql]
    И никаких join-ов.
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1)Это разные по смыслу запросы.
    При join я говорю: "Дай мне строки из первой таблицы, для которой есть строки из второй таблицы"
    При перечислении через запятую я говорю: "Выбери мне из всевозможного сочетания строк двух таблиц такие, которые соответствуют условию".
    Сюда же:
    Да я понимаю, что MSSQL (и скорее всего MySQL и прочие современные СУБД) используют оптимизатор запросов, чтобы сократить расход памяти и времени. Однако всегда есть положительная отличная от нуля вероятность, что придется работать с СУБД без подобного анализатора.

    2)Как при таком подходе организуется left(right) join?