Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с выводом из двух одинаковых таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
oriavon
Отправлено: 04 Марта, 2015 - 11:36:46
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Ребята, помогите разобраться.
У меня есть две одинаковые таблицы, но с разными данными из разных разделов сайта.
Нужно на главной вывести данные из двух таблиц вместе. нужно выводить одинаковые данные из двух таблиц. Пытаюсь это сделать так, но увы Не понял
Название 1 таблицы - prog
Название 2 таблицы - prog_skrudj
Таблицы абсолютно одинаковые. Есть поле id, title,description

PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT prog.id,title,description
  2. FROM prog
  3. INNER JOIN prog_skrudj on prog.id=prog_skrudj.id
  4. ";


Буду очень благодарна помощи!!!!

(Отредактировано автором: 04 Марта, 2015 - 11:37:08)

 
 Top
RickMan
Отправлено: 04 Марта, 2015 - 11:42:11
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Вам пересечение или объединение данных надо? Или что именно?
 
 Top
oriavon
Отправлено: 04 Марта, 2015 - 11:44:39
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




RickMan пишет:
Вам пересечение или объединение данных надо? Или что именно?

если честно не знаю( я только учусь.
Мне просто нужно вывести из двух одинаковых таблиц значения.
К примеру, в каждой таблице есть названия статей title и id этих статей (они могут совпадать в двух таблицах). Нужно вывести названия статей из двух таблиц.

(Отредактировано автором: 04 Марта, 2015 - 11:49:38)

 
 Top
Sail
Отправлено: 04 Марта, 2015 - 11:59:55
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




oriavon, используйте union.
 
 Top
oriavon
Отправлено: 04 Марта, 2015 - 12:23:44
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Sail пишет:
oriavon, используйте union.

спасибо! получилось!
только не понятно, как мне теперь ограничить вывод до 4 статей и отсортировать их, чтобы выводились последние? пишет ошибку: Incorrect usage of UNION and ORDER BY
PHP:
скопировать код в буфер обмена
  1. mysql_query("SELECT alt,titleimg,mini_img,date,view,id,title,description
  2.                  FROM prog ORDER BY date DESC, id DESC LIMIT 4
  3.                  
  4.                  UNION all
  5.                  SELECT alt,titleimg,mini_img,date,view,id,title,description
  6.                  FROM prog_skrudj ORDER BY date DESC, id DESC LIMIT 4
  7.                  
  8.                  ",$db);

(Отредактировано автором: 04 Марта, 2015 - 13:01:54)

 
 Top
Sail
Отправлено: 04 Марта, 2015 - 12:47:30
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




oriavon пишет:
Incorrect usage of UNION and ORDER BY

В том справочнике ведь приведён пример использования сортировки...
А отсечь лишние можно либо при разборе результата, либо обрамив всё ещё одним select ... limited.
 
 Top
oriavon
Отправлено: 04 Марта, 2015 - 12:47:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




всё получилось, перечитала еще раз статью Улыбка

на главной вывод есть.

вот так сделала
PHP:
скопировать код в буфер обмена
  1. mysql_query("(SELECT alt,titleimg,mini_img,date,view,id,title,description
  2.                  FROM prog ORDER BY date DESC, id DESC LIMIT 4)
  3.                  
  4.                  UNION all
  5.                  (SELECT alt,titleimg,mini_img,date,view,id,title,description
  6.                  FROM prog_skrudj ORDER BY date DESC, id DESC LIMIT 4)
  7.                  ORDER BY date DESC, id DESC LIMIT 4;
  8.                  ",$db);


следующая ошибка возникает при переходе по ссылке статьи, ведь в файле, который открывает саму статью указано, что выводить нужно именно из таблицы prog Мне здесь тоже нужно как-то union вставить???
CODE (htmlphp):
скопировать код в буфер обмена
  1. if (isset($_GET['id'])) {$id = $_GET['id'];}
  2. if (!isset($id)) {$id = 1;}
  3.   $result = mysql_query ("SELECT * FROM prog WHERE id=" . (int) $id,$db);
  4. if (!$result)  
  5. {
  6. echo "Запрос на выборку данных из базы не прошел";
  7. exit (mysql_error());
  8. }
  9. if (mysql_num_rows($result) > 0)
  10. {
  11. $myrow = mysql_fetch_array($result);
  12. $new_view = $myrow["view"] + 1;
  13. $update = mysql_query ("UPDATE prog SET view='$new_view' WHERE id='$id'",$db);
  14. }
  15. else
  16. {
  17. echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
  18. exit();
  19. }
  20. ?>

(Отредактировано автором: 04 Марта, 2015 - 13:01:39)

 
 Top
Sail
Отправлено: 04 Марта, 2015 - 13:05:56
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




oriavon пишет:
ведь в файле, который открывает саму статью указано, что выводить нужно именно из таблицы prog

Для разрешения данной коллизии можно добавить в каждый select дополнительное поле, идентифицирующее источник (или число, или название таблицы).
Например:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT 'table1' AS tablename, `id`, `title` FROM `table1` UNION SELECT 'table2' AS tablename, `id`, `title` FROM `table2`
 
 Top
oriavon
Отправлено: 04 Марта, 2015 - 13:15:15
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




а как быть с этой строкой? она считает количество просмотров статьи
oriavon пишет:
$update = mysql_query ("UPDATE prog SET view='$new_view' WHERE id='$id'",$db);
}

(Добавление)
сделала так, на главной выводится обе таблицы, а при переходе на просмотр статьи только с одной таблицы, подменяется по id и выводит только по id 1 Не понял

PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['id'])) {$id = $_GET['id'];}
  2. if (!isset($id)) {$id = 1;}
  3.  
  4.   $result = mysql_query ("
  5.  SELECT 'prog' AS tablename, `id`, `title`,`text`, `description`,`meta_k`, `meta_d`,`date`, `kluch`,`author`, `rating`,`q_vote`, `view`,`mini_img`, `alt`,`titleimg`, `cat`,`size`, `link`,`link_let`, `zaka`,`link_ua`, `phormat`,`link2`,`link3` FROM `prog`
  6.  
  7.  UNION all
  8.  
  9.  SELECT 'prog_skrudj' AS tablename, `id`, `title`,`text`, `description`,`meta_k`, `meta_d`,`date`, `kluch`,`author`, `rating`,`q_vote`, `view`,`mini_img`, `alt`,`titleimg`, `cat`,`size`, `link`,`link_let`, `zaka`,`link_ua`, `phormat`,`link2`,`link3` FROM `prog_skrudj`
  10.  
  11.  WHERE id=" . (int) $id,$db);
  12. if (!$result)  
  13. {
  14. echo "Запрос на выборку данных из базы не прошел";
  15. }
  16. if (mysql_num_rows($result) > 0)
  17. {
  18. $myrow = mysql_fetch_array($result);
  19. $new_view = $myrow["view"] + 1;
  20. $update = mysql_query ("UPDATE prog UNION all prog_skrudj SET view='$new_view' WHERE id='$id'",$db);
  21. }
  22. else
  23. {
  24. echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
  25. exit();
  26. }

(Добавление)
я тут подумала, это, наверное, сложно или даже нереально сделать, ведь у меня на странице просмотра статьи еще комментарии подключаются...
Может быть пойти другим путем и сделать разграничение на индексной странице.
Не знаю возможно ли это...
Допустим, если выводится значение с таблицы prog, то она будет открываться через файл view_prog.php
а если выводится статья из таблицы prog_skrudj, то она открывается файлом view_prog_skrudj.php
Это возможно сделать как-то???

(Отредактировано автором: 04 Марта, 2015 - 14:23:47)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB