Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 20

Выборка из нескольких таблиц БД и отображение в таблице

11.06.2012, 19:32. Показов 1534. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется БД такого вида:
books - bookID (AI, PK), name,year,isbn,annotation
authors - bookID,author

Необходимо произвести выборку и результат отобразить в таблице. Так-то задача вроде бы и простая, но намного удобнее, если общие строчки будут объединены в одну. (чтобы не было повторов одинаковых данных). Как это можно сделать?
запрос к БД такой:
SQL
1
2
3
4
SELECT `books` . * , `authors` . * 
FROM `books` 
LEFT JOIN `book`.`authors` ON `books`.`bookID` = `authors`.`bookID` 
LIMIT 0 , 30
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.06.2012, 19:32
Ответы с готовыми решениями:

Выборка из нескольких таблиц
Ребят, выручайте. Я SQL вообще не знаю, а задание надо сделать, дедлайн скоро. Сижу, читаю, но никак не могу понять, как правильно сделать....

Выборка из нескольких таблиц
Здравствуйте, в задании курсача стоит такой пункт: сделать выборку некоторых столбцов из таблицы, написал код но выдает пустоту без ошибки,...

Выборка из нескольких таблиц БД
Здраствуйте. Такая ситуация. Есть база данных MySQL, в которой имеется около 20 таблиц, каждая из которых соответствует определенной...

8
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.06.2012, 19:38
Ну так не писать * - все поля.
А перечислить только те которые нужны.
в данном случает можно так
SQL
1
SELECT `books`.* , `authors`.`author`
0
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 20
11.06.2012, 19:56  [ТС]
Поля - это второстепенное. Мне нужно вывести с помощью PHP в таблицу, пробовал так: вышеуказанный запрос, проход mysql_fetch_array, далее вывод в соответствующие ячейки.
Неудобно - много лишних строк. Необходимо как-то присоединить rowspan к нужным ячейкам.
Как это можно осуществить?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.06.2012, 20:04
Вы вообще о чём? Я например не слова не понял из того что Вы написали, это вы видите что та у вас выводится и что такое лишние строки и куда присоединить что вы хотите.

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

Добавлено через 58 секунд
Если именно в SQL слить 2 поля нужно то
SQL
1
CONCAT(поле1, поле2)
0
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 20
11.06.2012, 20:23  [ТС]
Использую код :
PHP
1
2
3
4
5
6
7
 print "<table width=\"100%\" border=\"1\" bordercolor=\"#000000\">
<tr><td>Ключ</td><td>Автор</td><td>Название</td><td>Год</td><td>Аннотация</td></tr>";
 $res= mysql_query("SELECT `books` . * , `authors` . *FROM `books`LEFT JOIN `book`.`authors` ON `books`.`bookID` = `authors`.`bookID`LIMIT 0 , 30");
 while ($row = mysql_fetch_array($res)){
print "<tr><td>$row[bookID]</td><td>$row[author]</td><td>$row[name]</td><td>$row[year]</td><td>$row[annotation]</td></tr>";
 }
print "</table>";
Получаю результат:
HTML5
1
2
<table width="100%" border="1" bordercolor="#000000">
<tr><td>Ключ</td><td>Автор</td><td>Название</td><td>Год</td><td>Аннотация</td></tr><tr><td>1</td><td>Петров И.В.</td><td>Основы радиолокации</td><td>1997</td><td>В книге освещены теоретические основы радиолокации.</td></tr><tr><td>1</td><td>Иванов А.А.</td><td>Основы радиолокации</td><td>1997</td><td>В книге освещены теоретические основы радиолокации.</td></tr><tr><td>2</td><td>Петриченко С.Р.</td><td>Справочник MySQL</td><td>2005</td><td>Проверочное значение</td></tr><tr><td>2</td><td>Никоноров А.Ю.</td><td>Справочник MySQL</td><td>2005</td><td>Проверочное значение<</td></tr></table>
Мне нужен HTML - код на выходе такого вида:
HTML5
1
2
3
4
5
6
7
 <table width="100%" border="1" bordercolor="#000000">
<tr><td>Ключ</td><td>Автор</td><td>Название</td><td>Год</td><td>Аннотация</td></tr>
<tr><td rowspan = 2>1</td><td>Петров И.В.</td><td rowspan = 2>Основы радиолокации</td><td rowspan = 2>1997</td><td rowspan = 2>В книге освещены теоретические основы радиолокации.</td></tr>
<tr><td>Иванов А.А.</td></tr>
<tr><td rowspan = 2>2</td><td>Петриченко С.Р.</td><td rowspan = 2>Справочник MySQL</td><td rowspan = 2>2005</td><td rowspan = 2>Проверочное значение</td></tr>
<tr><td>Никоноров А.Ю.</td></tr>
</table>
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.06.2012, 20:37
Тогда DISTINCT или GROUP BY вам в помощь
Как использовать DISTINCT? вот напрмиер
0
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 20
11.06.2012, 20:48  [ТС]
Про группировку понял. Только как это ВЫВЕСТИ, подзапросом? или как еще вставить rowspan при необходимости.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.06.2012, 21:17
Вам не поможет группировка. Я сразу не досмотрел что вам нужны разные авторы.

Можно например тогда свормировать вначале новый массив, в котором поле name будет массивом, тогда rowspan будет равен count($name)
то есть что то типа
PHP
1
2
3
4
5
6
7
8
9
$ar = array();
while ($row = mysql_fetch_array($res)){
    $ar[$row['bookID']]['author'][] = $row['author'];
    if (isset( $ar[$row['bookID']]['bookID']))
        continue;
    $ar[$row['bookID']]['bookID'] = $row['bookID'];
    $ar[$row['bookID']]['name'] = $row['name'];
    // и так далее
}
1
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 20
11.06.2012, 21:24  [ТС]
Спасибо, подход понятен, то что доктор прописал в конкретный код воплощу уже завтра!
Тоже думал, что надо как-то использовать массивы, теперь понятно, как именно: МНОГОМЕРНЫЙ массив!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.06.2012, 21:24
Помогаю со студенческими работами здесь

Выборка из нескольких таблиц
есть 2 таблицы 'AUDUSD' и 'EURUSD' в каждой есть столбец с названием 'c100' нужно одним запросом изъять AUDUSD c100 где id = 1 и...

выборка с нескольких таблиц
вот к примеру у меня есть 4 таблицы и в них всех есть колонки с названием word, мне нужно чтобы со всех таблиц все значения поля word были...

Выборка из нескольких таблиц
Всем привет! У меня возникла такая проблема: есть таблицы 14, 15, 16. Надо сделать форму чтобы при выборе из списка номера таблицы...

Выборка из нескольких таблиц
Приветствую! Предположим, имеется две таблицы: main (id INT, price INT, info TEXT) и areas (id INT, total INT). Главные ключи - id (1...

Выборка из нескольких таблиц
Доброго времени суток. Будьте добры, подскажите. На примере базы данных о фильмах (видеотеки), имеется три таблицы: Таблица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru