За последние 24 часа нас посетили 63990 программистов и 1740 роботов. Сейчас ищет 841 программист ...

Выбрать одно поля из нескольких таблиц mysql

Тема в разделе "MySQL", создана пользователем rs_ssh, 31 авг 2014.

  1. rs_ssh

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

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Собственно нужно выбрать поля name c 3-х таблиц.
    Как можно всё это объединить в один запрос?
    Код (Text):
    1. $result_brands = $mysqli->query("SELECT name FROM `brands` WHERE id='$brands'");
    2. $result_origin = $mysqli->query("SELECT name FROM `origin` WHERE id='$origin'");
    3. $result_city = $mysqli->query("SELECT name FROM `city` WHERE id='$city'");
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  3. rs_ssh

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

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Код (Text):
    1. $result = $mysqli->query("(SELECT name FROM `brands` WHERE id='$brands')
    2.         UNION (SELECT name AS origin FROM `origin` WHERE id='$origin')
    3.         UNION (SELECT name FROM `city` WHERE id='$city')");
    Как можно потом работать с значениями myrow["name"] для brands,origin,city по отдельности?
    $myrow = mysqli_fetch_array($result); - как я понимаю запишется только одно значение myrow["name"] для brands.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    юнион клеит всё в одну таблицу.
    чувак, ты сказал как это заклеить всё нафик - юнион поможет. =) работать с этим наверное никак, кроме того, что ты получаешь список из всех name какие только найдутся под эти условия. Понимать где что будет сложно. Плюс во втором запросе у тебя "AS origin" который тут не при делах совсем. он не нужен. Чтобы знать откуда что можно сделать вот так:
    Код (Text):
    1.  
    2.         (SELECT `name`, `type`='brands' FROM `brands` WHERE id='$brands')
    3.         UNION
    4.         (SELECT `name`, `type`='origin'  FROM `origin` WHERE id='$origin')
    5.         UNION
    6.         (SELECT `name`, `type`='city' FROM `city` WHERE id='$city')
    если я не ошибаюсь, конечно.

    Обрисуй задачу.
     
  5. rs_ssh

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

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Сорри "чувак" неувязочка вышла :)
    Unknown column 'type' in 'field list' - выдаёт ошибку

    Код (Text):
    1. $final=array();
    2. while($myrow = mysqli_fetch_row($result))
    3.             {
    4.                 $final[]=$myrow;
    5.             }
    6.  
    7. <p>Brands: <?echo $final[0][0];?></p>
    8. <p>Origin: <?echo $final[1][0];?></p>
    9. <p>City: <?echo $final[2][0];?></p>
    Как-то таким макаром пришлось решить проблему.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Синтаксис не помню. Может через AS

    Но я всё равно не понимаю твою задачу. Сначала ты валишь всё в кучу, а потом выводишь отдельно?
     
  7. rs_ssh

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

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Допустим, нужно взять данные сразу с 10-ти таблиц. Нужно ли делать 10 отдельных запросов или же лучше воспользоваться одним.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    задача какая?