HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Очень простой запрос, но как?)
  #1  
Старый 07.02.2010, 03:49
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
С нами: 9512704

Репутация: 4
Thumbs up Очень простой запрос, но как?)

Есть таблица t1. В ней записи
Код:
Динамо
Шахтар
Таврия
Металлург Донецк
Оболонь
Есть таблица t2. В этой таблице t2 множество записей и каждая запись соответствует одной конкретной записи из таблица t1 (либо Динамо, либо Шахтар, либо Таврия, либо Металлург Донецк, либо Оболонь). Связь по id.

Как должен выглядеть запрос, который выводит по 3 последних по времени записи из таблицы t2 для каждого из значений таблицы t1? Результатом, очевидно, должен быть двумерный массив.

В итоге картина:
Код:
Динамо
1. ...
2. ...
3. ...
Шахтар
1. ...
2. ...
3. ...
Таврия
1. ...
2. ...
3. ...

Последний раз редактировалось dimash; 07.02.2010 в 04:46..
 
Ответить с цитированием

  #2  
Старый 07.02.2010, 07:41
imajo.ati
Участник форума
Регистрация: 21.02.2008
Сообщений: 255
С нами: 9589849

Репутация: 177
По умолчанию

у тебя какая БД?
Цитата:
MySQL Function cannot return Composite datatype
тебе придется склеивать результат в строку и потом парсить

и нисколько это не простой запрос!
 
Ответить с цитированием

  #3  
Старый 07.02.2010, 12:31
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
С нами: 9512704

Репутация: 4
По умолчанию

Цитата:
Сообщение от imajo.ati  
у тебя какая БД?

тебе придется склеивать результат в строку и потом парсить

и нисколько это не простой запрос!
MySQL.
 
Ответить с цитированием

  #4  
Старый 07.02.2010, 13:17
-=Zhenek=-
Участник форума
Регистрация: 31.12.2007
Сообщений: 279
С нами: 9663762

Репутация: 114
По умолчанию

В таблице t2 есть указание на то что эта запись относится к таблице t1 ?

пример t1

id name
1 Бавария
2 Швецария


t2

id name parent
1 ббла 1
2 олол 2

если есть,то запрос,цикл и все дела
 
Ответить с цитированием

  #5  
Старый 07.02.2010, 13:28
CPU0
Участник форума
Регистрация: 05.01.2010
Сообщений: 127
С нами: 8603674

Репутация: 61
По умолчанию

SELECT * FROM t2 INNER JOIN t1 ON t2.id=t1.id WHERE id IN (SELECT id FROM t1) ORDER BY id DESC LIMIT 3

попробуй, а так бы лучше загурзил дамп ДБ

p.s. не поучится так -
Цитата:
Динамо
1. ...
2. ...
3. ...
Шахтар
1. ...
2. ...
3. ...
Таврия
1. ...
2. ...
3. ...
в лучшем случае получится так
Цитата:
Динамо 1. ...
Динамо 2. ...
Динамо 3. ...
Шахтар 1. ...
Шахтар 2. ...
Шахтар 3. ...
Таврия 1. ...
Таврия 2. ...
Таврия 3. ...

Последний раз редактировалось CPU0; 07.02.2010 в 13:33..
 
Ответить с цитированием

  #6  
Старый 07.02.2010, 14:54
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
С нами: 9512704

Репутация: 4
По умолчанию

ОК. Даю полностью вид таблицы.



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

Опережаю ваш вопрос. "первая таблица - это что? что с ней делать"
Это секции, когда ты нажимаешь на секцию политика, там выводятся последние три события партий.
 
Ответить с цитированием

  #7  
Старый 07.02.2010, 15:55
-=Zhenek=-
Участник форума
Регистрация: 31.12.2007
Сообщений: 279
С нами: 9663762

Репутация: 114
По умолчанию

PHP код:
$res mysql_query("SELECT * FROM t1");

 while(list(
$id,$title)=mysql_fetch_row($res)) { // В этом цикле получаем список секций
echo "$title";
 
$res_2 mysql_query("SELECT * FROM t2 WHERE id_sections ='$id'");
   while(list(
$id_s,$title_s)=mysql_fetch_row($res)) {  // в этом цикле список категорий для данной секции
  
echo "<a href>$title_s</a>";
   }
 
 } 
для вывода новостей тоже самое. Только для вывода 3 напиши LIMIT 3

Может это не самый рациональный вариант, но он позволит придать такой вид как хочет автор.
 
Ответить с цитированием

  #8  
Старый 07.02.2010, 16:54
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
С нами: 9512704

Репутация: 4
По умолчанию

Цитата:
Сообщение от -=Zhenek=-  
PHP код:
$res mysql_query("SELECT * FROM t1");

 while(list(
$id,$title)=mysql_fetch_row($res)) { // В этом цикле получаем список секций
echo "$title";
 
$res_2 mysql_query("SELECT * FROM t2 WHERE id_sections ='$id'");
   while(list(
$id_s,$title_s)=mysql_fetch_row($res)) {  // в этом цикле список категорий для данной секции
  
echo "<a href>$title_s</a>";
   }
 
 } 
для вывода новостей тоже самое. Только для вывода 3 напиши LIMIT 3

Может это не самый рациональный вариант, но он позволит придать такой вид как хочет автор.
Читаем внимательно вопрос. Где написано что надо вывести категории и секции? Нигде не написано.

Повторюсь.
Цитата:
теперь что сделать нужно. простыми словами, без терминов
выбрать по три последних события для каждой команды
Вывести нужно через "Enter" по три последних события каждой команды.
 
Ответить с цитированием

  #9  
Старый 07.02.2010, 17:04
-=Zhenek=-
Участник форума
Регистрация: 31.12.2007
Сообщений: 279
С нами: 9663762

Репутация: 114
По умолчанию

Цитата:
Читаем внимательно вопрос.
Смотрим внимательно код.
Меняем названия табоиц и вуаля! Я тебе подал идею,а не реализацию т.к делай сам.
А с таким гонором я те вообще помогать не буду
 
Ответить с цитированием

  #10  
Старый 07.02.2010, 20:41
dimash
Познающий
Регистрация: 14.04.2008
Сообщений: 78
С нами: 9512704

Репутация: 4
По умолчанию

Цитата:
Сообщение от -=Zhenek=-  
Смотрим внимательно код.
Меняем названия табоиц и вуаля! Я тебе подал идею,а не реализацию т.к делай сам.
А с таким гонором я те вообще помогать не буду
Я без гонора. Когда спрашивают определенный вопрос, то подразумевают ответ на него. Зачем ответ на то, что уже сделано. Вот так именно лучше, конечно, не помогать.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 6762 17.06.2010 21:23



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.