27 / 27 / 10
Регистрация: 26.01.2013
Сообщений: 231

Выборка из базы через join

25.08.2013, 22:38. Показов 758. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Проблема такая. Есть 2 таблицы в базе.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- Структура таблицы `site_updates`
--
 
CREATE TABLE IF NOT EXISTS `site_updates` (
  `update_id` INT(4) NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор обновления',
  `version_release` VARCHAR(11) NOT NULL COMMENT 'Версия релиза',
  `date_release` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата выхода релиза',
  PRIMARY KEY (`update_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 COMMENT='Обновления сайта' AUTO_INCREMENT=2 ;
 
--
-- Дамп данных таблицы `site_updates`
--
 
INSERT INTO `site_updates` (`update_id`, `version_release`, `date_release`) VALUES
(1, '0.0.1', '2013-08-25 23:00:13');
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- Структура таблицы `release_title`
--
 
CREATE TABLE IF NOT EXISTS `release_title` (
  `id_title` INT(5) NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор заголовка релиза',
  `update_id` INT(4) NOT NULL COMMENT 'Идентификатор обновления',
  `release_title` VARCHAR(150) NOT NULL COMMENT 'Заголовок релиза',
  `header_description_release` text NOT NULL COMMENT 'Описание заголовка релиза',
  PRIMARY KEY (`id_title`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
 
--
-- Дамп данных таблицы `release_title`
--
 
INSERT INTO `release_title` (`id_title`, `update_id`, `release_title`, `header_description_release`) VALUES
(1, 1, 'Добавлен раздел "Обновления сайта"', 'В данном разделе будут опубликовываться описания обновлений, которые были произведены на сайте.');
Суть такова, что в первой таблице лежит версия релиза и дата выхода релиза а во второй n-ое количество обновлений которые были произведены в релизе.

На данный этап выбираю
PHP
1
$releases = mysql_query("SELECT a.version_release as a_version_release, DATE_FORMAT(a.date_release, '%e %M %Y в %H:%i') as a_date_release FROM site_updates as a ORDER BY a.update_id DESC");  /* Выбираем все нужным нам данным из базы */
потом вывожу все обновления, но в цикле
PHP
1
2
3
4
5
do
      {
           // вывожу версию релиза и дату
          // А здесь нужно вывести все обновления которые по айдишнику относятся к релизу
      }
Вопрос как соединить 2 таблицы чтобы в версии релиза выводить все обновления релиза? Можно конечно выбрать сначала версии и в цикле версии снова делать выборку и выбирать уже все обновления релиза, но это уже 2 запроса, а это не есть хорошо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2013, 22:38
Ответы с готовыми решениями:

Выборка из базы через разделитель
Добрый вечер! Я с толкнулся с проблемой. Есть таблица cat в ней поле name В него вбиваются данные через запятую (то есть допустим в базе...

Выборка записей из таблицы базы данных через filter
Нужно выбрать все записи со значением зарплаты выше введенного, значение можно задать через edit, как осуществить фильтрацию в фильтре...

выборка join-where
есть такая структура бд CREATE TABLE IF NOT EXISTS `personnel`.`tbl_practice` ( `id` TINYINT(1) NOT NULL AUTO_INCREMENT , ...

6
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.08.2013, 22:47
SQL
1
SELECT ...... FROM ... LEFT JOIN `table2` USING(`update_id`) ORDER .....
Добавлено через 1 минуту
или, скорее, вам надо не LEFT JOIN, а INNER JOIN
1
27 / 27 / 10
Регистрация: 26.01.2013
Сообщений: 231
25.08.2013, 22:53  [ТС]
Благодарю! А если так? и коммент написал в коде, что не выходит
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* Обнолвения сайта */
$releases = array(); /* Очищаем массив */
$releases = mysql_query("SELECT a.version_release as a_version_release, DATE_FORMAT(a.date_release, '%e %M %Y в %H:%i') as a_date_release, b.release_title as b_release_title, b.header_description_release as b_header_description_release FROM site_updates as a  INNER JOIN release_title AS b ON a.update_id = b.update_id ORDER BY a.update_id DESC");    /* Выбираем все нужным нам данным из базы */
echo "<div class='updates'>";
    if ($releases == FALSE) /* Если произошла ошибка в запросе */
        {
            echo "<span class='error_mysql_query'>{$global_12}</span>";
        }
    if ($releases == TRUE)  /* Если ошибки в запросе не произошло */
        {
            if (mysql_num_rows($releases) == 0)  /* Если количество равно 0 */
                {
                    echo "<span class='mysql_num_rows_null'>{$global_13}</span>";
                }
            if (mysql_num_rows($releases) > 0)  /* Если количество больше 0 */
                {
                    $releases_array = mysql_fetch_array($releases); /* Ложем в переменную массив с данными */
                    do  /* Цикл */
                        {
                            echo "<div>";
                                echo "<div class='block_updates'>";
                                    echo "<div class='updates_version'>";
                                        echo "<span class='updates_version_text'>Версия релиза:</span> <span class='updates_version_number'>{$releases_array['a_version_release']}</span>";
                                    echo "</div>";
                                    echo "<div class='clear'></div>";
                                    echo "<div class='what_s_new_in_release'>";
                                        echo "<img class='what_s_new_in_release_img' src='images/updates/new_upload.png' />";
                                        echo "<div class='what_s_new_in_release_text'>Что нового в данном релизе?</div>";
                                    echo "</div>";
                                    echo "<div class='clear'></div>";
                                    // Только тут получается нужно както циклом прогнать все обновления релиза, а как?
                                    echo "<div class='text_updates'><img class='text_updates_img' src='images/updates/ul_li.png' /><span class='text_updates_text'>{$releases_array['b_release_title']}</span></div>";
                                    echo "<div class='text_updates_clarifications'><img class='text_updates_img_clarifications' src='images/updates/clarifications.png' /><span class='text_updates_text_clarifications'>{$releases_array['b_header_description_release']}</span></div>";
                                    echo "<div class='release_date'>Дата выхода релиза: {$releases_array['a_date_release']}</div>";
                                echo "</div>";
                            echo "</div>";
                        }
                    while($releases_array = mysql_fetch_array($releases));  /* Делать цикл пока есть записи */
                }
        }
echo "</div>";
А сейчас наоборот выводится тип версии релиза 2 а не 2 обновления в релизе
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.08.2013, 22:59
Так у вас может быть много релизов на одну запись ? Используйте замените INNER на RIGHT
1
27 / 27 / 10
Регистрация: 26.01.2013
Сообщений: 231
25.08.2013, 23:07  [ТС]
Нет наоборот 1 релиз и в нём 1 и более записей. На данный этап код не менял. и получается что релиз 0.0.1 и в нём 2 записи 1 и 2, в выводит мне релиз 0.0.1 запись 1 и следом релиз 0.0.1 запись 2, а нужно просто релиз 0.0.1 запись 1. Запись 2.
Миниатюры
Выборка из базы через join  
0
27 / 27 / 10
Регистрация: 26.01.2013
Сообщений: 231
25.08.2013, 23:35  [ТС]
Уже как только не пробовал и всё равно результат такой как на скрине
0
Заблокирован
26.08.2013, 09:00
Цитата Сообщение от anonymous_23 Посмотреть сообщение
Есть 2 таблицы в базе.
Сколько отношений? Если тоже 2, то фундаментальная схема "суть такова":

select t1.*, t2.* from t1, t2 where t1.child_iden = t2.parent_iden;

Кстати, а как вы каменты к полям достаете в php?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2013, 09:00
Помогаю со студенческими работами здесь

Выборка с Join
Здравствуйте! Существует две таблицы - с товарами и фильтрами. Фильтры подключены в запрос через join. Первая таблица имеет вид: ...

Выборка с использованием JOIN
Всем привет! Не могли вы помочь бедному студенту с JOIN-ом. &quot;Вывести список названий дисциплин (поле Namesubject из таблицы Subjects)...

Выборка списка в join
Привет. Подскажите что использовать, что бы сделать выборку списка, используя join. Вот примерный запрос $sql = &quot;SELECT t1.*,t2.* ...

Выборка из двух таблиц и Inner Join
выбираю данные из двух таблиц select tehnika.num_teh as Наименование,hist_remont.date_izm from tehnika,hist_remontздесь всё ОК теперь...

Выборка из нескольких таблиц с JOIN
всем привет. есть 3 таблицы. как правильно выбрать все классы для препода с id = 1(или с id = 2, c условием WHERE) и его...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru