За последние 24 часа нас посетили 45554 программиста и 1813 роботов. Сейчас ищут 1600 программистов ...

UNION

Тема в разделе "MySQL", создана пользователем rustoke, 15 июн 2015.

  1. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    1) Почему не выводит через echo [tel] ? или нужно использовать NULL AS tel вместо NULL?
    2) как узнать из какой таблицы выводит [text] ?
    Код (PHP):
    1. $sql_arr=mysql_query("
    2.     (
    3.     SELECT id, time, title, text, city, cat, null FROM table1
    4.     ) UNION (
    5.     SELECT id, time, title, text, city, cat, tel FROM table2
    6.     ) 
    7.     order by id desc"
    8.     );
    9. }
    10. while($sql = mysql_fetch_array($sql_arr)) {
    11. echo $sql['tel']." - ".$sql['text']."<br>";
    12. }
    13.  
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Может его там просто нет?
    Код (Text):
    1. var_dump($sql['tel']);
     
  3. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    1. выполните запрос в клиенте или консоли и посмотрите какая выборка получается и получается-ли.
    2. следуя вашему списку полей - никак. Можно добавить псевдополе как идентификатор таблицы раз есть необходимость в таком запросе.
     
  4. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    в table 1 нет поля tel, а в table 2 есть. Если вместо NULL прописать NULL as tel для table 1, то из table 2 все таки начинает выводить поле tel

    Добавлено спустя 1 минуту 34 секунды:
    псевдополе, это как? создать по полю в каждой таблице, например category со значениями 1 или 2 , так?
     
  5. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Код (Text):
    1. UNION
    2. SELECT id, time, title, text, city, cat, tel, 'table2' type FROM table2
     
  6. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    с type появляется ошибка Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
     
  7. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Весь запрос покажите который отрабатывает
     
  8. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Код (PHP):
    1. $sql_arr=mysql_query("
    2.     (
    3.     SELECT id, time, title, text, city, cat, null FROM resumes
    4.     ) UNION (
    5.     SELECT id, time, title, text, city, cat, tel FROM vacancies
    6.     ) 
    7.     order by id desc"
    8.     );
    9.  
    10.  
    11. while($sql = mysql_fetch_array($sql_arr)) {
    12. echo $sql['time']." - ".$sql['title']." - ".$sql['text']." - ".$sql['city']." - ".$sql['cat'];
    13.  
    14. //ниже не работает
    15. if($sql['tel']){
    16. echo $sql['tel'];
    17. }
    18.  
    19.  
    20. }
    Добавлено спустя 1 минуту 24 секунды:
    а с type пробовал так
    Код (PHP):
    1. $sql_arr=mysql_query("
    2.     (
    3.     SELECT id, time, title, text, city, cat, null FROM resumes
    4.     ) UNION (
    5.     SELECT id, time, title, text, city, cat, tel, vacancies type FROM vacancies
    6.     ) 
    7.     order by id desc"
    8.     );
    9.  
     
  9. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    И в этом запросе вас ничего не смущает?
     
  10. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    я с type раньше не сталкивался, возникающая ошибка вроде как означает не равное кол-во полей... в resumes тоже нужно type ?

    Добавлено спустя 57 секунд:
    null ставлю, т.к. в resumes нет tel. в чем ошибка ?
     
  11. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Вы её уже сами назвали. Во-первых, разное количество полей в запросах с UNION, решите проблему.
    Во-вторых, подумайте над разницей между записями:
    vacancies type
    и
    'vacancies' type (или 'vacancies' AS type)
     
  12. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Код (PHP):
    1. $sql_arr=mysql_query("
    2.     (
    3.     SELECT id, time, title, text, city, cat, null, 'resumes' type FROM resumes
    4.     ) UNION (
    5.     SELECT id, time, title, text, city, cat, tel, 'vacancies' type FROM vacancies
    6.     ) 
    7.     order by id desc"
    8.     );
    tel все равно через echo не отображается, если к null не прибавить "null as tel" в табл resumes

    Добавлено спустя 1 минуту 36 секунд:
    еще я с type не сталкивался, какую он роль играет здесь?
     
  13. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    И не должен
    http://www.mysql.ru/docs/man/SELECT.html