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

Не могу вытащить с MySQL (с 2-мя таблицами)

06.09.2013, 03:16. Показов 2212. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здарова! Хочу сделать топ 5 активно заливающих. В общем беру 2 таблицы: users (id, username), torrents (id,owner,added).
Должно получится так:

username1 26
username2 22
username3 21
username4 10
username5 5

Вот что пока получается:
PHP
1
2
3
<?$res = sql_query("SELECT t.id,t.owner,t.added,COUNT(*) FROM torrents t LEFT JOIN users u ON (u.id=t.owner) WHERE t.added='2013-09' GROUP BY t.owner ORDER BY t.added DESC LIMIT 5") or die(mysql_error());
while($row = mysql_fetch_array($res))
{echo "<div class='row'><a href='http://10.60.26.230/userdetails.php?id={$row['owner']}'>{$row['username']}</a>{$row['added']}</div>";}?>
Никак не могу сделать, так чтоб отображались имена пользователей, все время выходят ID. WHERE по added тоже не работает если поставить 2013-09, а так на самом деле в таблице так 2013-09-04 23:34:34, просто я хотел вытащить только залитые в текущем месяце. Помогите пожалуйста с посчетам, о том сколько раз залил в этом месяце.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2013, 03:16
Ответы с готовыми решениями:

Не могу создать связь между таблицами MySql
Нужно создать 3 таблицы со связью, но связь не получается. Помогите пожалуйста. Таблица конференций IdКонференция ключ...

работа с 2 таблицами mysql
Имеются 2 базы данных: первая таблица - news и её столбцы: |id_news| title |text|id_author|date| | 1 |title1|......

Работа с таблицами MySQL
Немножко запутался, какую таблицу и ячейки создавать? //file db.php &lt;?php $host = &quot;localhost&quot;; $user = &quot;&quot;; ...

27
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.09.2013, 03:24
пришлите дамп БД, чтобы я мог проверить и дать точный результат
0
 Аватар для cantsave
7 / 7 / 0
Регистрация: 21.11.2011
Сообщений: 295
06.09.2013, 03:27  [ТС]
Цитата Сообщение от Милый Враг Посмотреть сообщение
пришлите дамп БД
В данный момент нету, на работе сижу. Дома буду только через 9-10 часов, и там еще инет отрубили. Можно пожалуйста прямо сейчас.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.09.2013, 04:16
Хотя бы опишите процесс как записывались данные в не..
Я так понял в таблице юзерс уникальное поле id (автоинкремент) и уникальное поле username.
Таблица torrents (id,owner,added) и НЕ ИМЕЕТ никаких уникальных полей.
при записи в нее указывается id того кто закачал что то, при чем так как не уникальное поле, может содержать некоторое число одинаковых id..
я правильно понял?

Добавлено через 10 минут
в общем не дождался, иду спать. по возможности опишите процесс либо скиньте дамп, если не понять точно как там записываются и храняться данные то возможны переделки и потеря времени. Судя по запросу можно понять, но вопрос в том, правильный ли запрос SQL (если так то все работало бы)
0
 Аватар для cantsave
7 / 7 / 0
Регистрация: 21.11.2011
Сообщений: 295
06.09.2013, 04:18  [ТС]
Цитата Сообщение от Милый Враг Посмотреть сообщение
Я так понял в таблице юзерс уникальное поле id (автоинкремент) и уникальное поле username
Что вы подразумеваете под уникальным? Да, id автоинкриментом.
Цитата Сообщение от Милый Враг Посмотреть сообщение
Таблица torrents (id,owner,added) и НЕ ИМЕЕТ никаких уникальных полей
Просто я хочу вытащить данные именно с этих полей, остальные не нужны, в моем случае.
В таблице torrents записываются id того кто заливает. В данном случае owner это id того кто заливал, т.е. t.owner=u.id . Уникальное id, а owner может быть указан несколько раз.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.09.2013, 05:36
В таком случае вот так
SQL
1
SELECT * FROM torrents t LEFT JOIN users u ON (u.id=t.owner) AND t.added='2013-09' GROUP BY t.owner ORDER BY COUNT(t.owner) DESC LIMIT 5
1
 Аватар для cantsave
7 / 7 / 0
Регистрация: 21.11.2011
Сообщений: 295
06.09.2013, 07:26  [ТС]
Цитата Сообщение от Милый Враг Посмотреть сообщение
В таком случае вот так
Спасибо большое! Сегодня вечером попробую

Добавлено через 1 минуту
Если у кого-то другие варианты, прошу выкладывать.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.09.2013, 08:11
Цитата Сообщение от cantsave Посмотреть сообщение
Спасибо большое!
Не за что. Не забудьте отписаться, даже в том случае, если это решение правильное, чтобы другие форумчане знали, что проблема решена, ведь возможно, кто то тоже столкнется с этим...
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.09.2013, 10:00
а кстати чтобы еще и количество выдавал
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
<?php
$res = mysql_query("SELECT * FROM torrents t LEFT JOIN users u ON (u.id=t.owner) AND t.added='2013-09' GROUP BY t.owner ORDER BY  COUNT(t.owner) DESC LIMIT 5") or die(mysql_error());
?>
<table cellpadding="3" cellspacing="1" border="0">
<?php
$color=Array('7b5950','8b6960','9d7c74','ae9088','c0a59e'); // массив цветов чтобы менять цвет таблицы плавно   
$i=0;
while($row = mysql_fetch_array($res))
{
$num=mysql_num_rows(mysql_query("SELECT * FROM torrents WHERE owner={$row['owner']}")); // определяем количество закачек
 echo "
   <tr class='row' bgcolor=#{$color[$i]}>
     <td colspan='3' height='1'></td>
   </tr>
   
   <tr class='row' bgcolor=#{$color[$i]}>
     <td>&nbsp;<a href='http://10.60.26.230/userdetails.php?id={$row['owner']}'>{$row['username']}</a>&nbsp;</td><td>&nbsp;{$row['added']}&nbsp;</td><td>&nbsp;Çàãðóæåíî: $num&nbsp;</td>
   </tr>
 "; $i++;
 }
?>
 
   <tr class='row' bgcolor='#c0a59e'>
     <td colspan='3' height='1'></td>
   </tr>
   
</table>
<?php
 
  
?>
это пример кода, в котором результаты отображаются в таблице и каждая строка плавно меняет свой цвет. Вместо Username будут отображаться имена или ники пользователей
чтобы было оккуратней, рекомендую вмето того чтобы показывать 5 раз дату, один раз показать вверху, получится очень оккуратно
Миниатюры
Не могу вытащить с MySQL (с 2-мя таблицами)  
1
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
06.09.2013, 10:10
В конце в моем коде лишнее
PHP
1
2
3
4
<?php
 
  
?>
0
 Аватар для cantsave
7 / 7 / 0
Регистрация: 21.11.2011
Сообщений: 295
06.09.2013, 10:29  [ТС]
Цитата Сообщение от Милый Враг Посмотреть сообщение
е забудьте отписаться
Обязательно!

Добавлено через 4 минуты
Цитата Сообщение от Милый Враг Посмотреть сообщение
а кстати чтобы еще и количество выдавал

это пример кода, в котором результаты отображаются в таблице и каждая строка плавно меняет свой цвет. Вместо Username будут отображаться имена или ники пользователей
чтобы было оккуратней, рекомендую вмето того чтобы показывать 5 раз дату, один раз показать вверху, получится очень оккуратно
Еще раз Большое Спасибо! Круто сделано. Я бы так не смог.
0
 Аватар для nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
06.09.2013, 11:07
Цитата Сообщение от Милый Враг Посмотреть сообщение
если это решение правильное
Не совсем. У ТС запрос более корректный, только что не дотянул немного.
Цитата Сообщение от Милый Враг Посмотреть сообщение
а кстати чтобы еще и количество выдавал
А это вообще зря. Запрос в цикле, это моветон. Не делайте так и уж тем более не советуйте никому.
Вот таким запросом можно получить количество закачек сразу:
SQL
1
2
3
4
5
6
7
SELECT t.id, t.added, u.username, COUNT( * ) AS cnt
FROM torrents t
LEFT JOIN users u ON u.id = t.owner
WHERE DATE_FORMAT( t.added, '%Y-%m' ) = '2013-09'
GROUP BY t.owner
ORDER BY cnt DESC 
LIMIT 5
Тут кстати и с датами все в порядке.
2
 Аватар для cantsave
7 / 7 / 0
Регистрация: 21.11.2011
Сообщений: 295
06.09.2013, 17:01  [ТС]
Цитата Сообщение от nubo Посмотреть сообщение
Вот таким запросом можно получить количество закачек сразу:
Точно, более маловесный и понятливый получился

Добавлено через 1 час 24 минуты
Цитата Сообщение от nubo Посмотреть сообщение
А это вообще зря. Запрос в цикле, это моветон. Не делайте так и уж тем более не советуйте никому.
Вот таким запросом можно получить количество закачек сразу:
SQL
1
2
3
4
5
6
7
SELECT t.id, t.added, u.username, COUNT( * ) AS cnt
FROM torrents t
LEFT JOIN users u ON u.id = t.owner
WHERE DATE_FORMAT( t.added, '%Y-%m' ) = '2013-09'
GROUP BY t.owner
ORDER BY cnt DESC 
LIMIT 5
Тут кстати и с датами все в порядке.
Четко работает! Как раз.

Добавлено через 2 часа 20 минут
PHP
1
2
3
4
<?
$res = sql_query("SELECT t.id, t.added, u.username, t.owner, COUNT( * ) AS cnt FROM torrents t LEFT JOIN users u ON u.id = t.owner WHERE DATE_FORMAT( t.added, '%Y-%m' ) = '2013-09' GROUP BY t.owner ORDER BY cnt DESC LIMIT 5 ") or die(mysql_error());
while($row = mysql_fetch_array($res))
{echo "<tr><td width='37px' align='center' style='border: none'><img src='pic/yua/smile52.gif' border='0' alt='' width='31' height='26' /></td><td width='100px' align='left' style='border: none'>&nbsp;<a href='http://10.60.26.230/userdetails.php?id={$row['owner']}'>{$row['username']}</a>&nbsp;</td><td width='37px' align='center' style='border: none'>&nbsp;{$row['cnt']}&nbsp;</td></tr>";}?>
Как тут можно сделать, так чтоб в каждой строке был другой рисунок? Вот этот рисунок - <img src='pic/yua/smile52.gif' border='0' alt='' width='31' height='26' />. Просто хочу что были разные медали первым трем.

Добавлено через 2 часа 1 минуту
PHP
1
2
3
4
$img=Array('smile1','smile2','smile3','medal');
$i=0;
while($row = mysql_fetch_array($res))
{echo "<tr><td width='37px' align='center' style='border: none'><img src='pic/yua/{&img[$i]}.gif' border='0' alt='' width='31' height='26'></td><td width='100px' align='left' style='border: none'>&nbsp;<a href='http://10.60.26.230/userdetails.php?id={$row['owner']}'>{$row['username']}</a>&nbsp;</td><td width='37px' align='center' style='border: none'>&nbsp;{$row['cnt']}&nbsp;</td></tr>";$i++;}?>
Вот что пытался сделать с помощью массива. Не получается что-то.

Добавлено через 1 минуту
Цитата Сообщение от Милый Враг Посмотреть сообщение
...
Цитата Сообщение от nubo Посмотреть сообщение
...
Помоги пожалуйста с массивом.
0
 Аватар для nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
06.09.2013, 17:48
Милый Враг же написал нормальный вывод. Ну поменяйте стиль на картинку, чего там не понятного...
0
 Аватар для cantsave
7 / 7 / 0
Регистрация: 21.11.2011
Сообщений: 295
07.09.2013, 06:40  [ТС]
Сам разобрался. Еще вчера сделал. За основу взял идею пользователя Милый Враг

PHP
1
2
3
4
$img=Array(0=>'pic/yua/1st.png',1=>'pic/yua/2nd.png',2=>'pic/yua/3rd.png',3=>'pic/yua/45.png',4=>'pic/yua/45.png',5=>'pic/yua/45.png',6=>'pic/yua/45.png',7=>'pic/yua/45.png',8=>'pic/yua/45.png',9=>'pic/yua/45.png',10=>'pic/yua/45.png',);
$i=0;
while($row = mysql_fetch_array($res) or $i<=0)
{echo "<tr><td width='37px' align='center' style='border: none; padding-bottom:10px'><img src='$img[$i]' border='0' alt=''></td><td width='100px' align='left' style='border: none;padding-bottom:10px'>&nbsp;<a href='http://10.60.26.230/userdetails.php?id={$row['owner']}'>{$row['username']}</a>&nbsp;</td><td width='37px' align='center' style='border: none;padding-bottom:10px'>&nbsp;{$row['cnt']}&nbsp;</td></tr>";$i++;}?>
Добавлено через 3 минуты
Цитата Сообщение от nubo Посмотреть сообщение
чего там не понятного...
Для новичка все это в новинку )
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
07.09.2013, 07:39
Цитата Сообщение от nubo Посмотреть сообщение
Не совсем. У ТС запрос более корректный, только что не дотянул немного.
полностью согласен с вашим решением, просто изначально я не заметил что нужно еще и подсчитать, поэтому ввел можно даже так сказать не корректную добавку. Пожалуй, плюсану.


Цитата Сообщение от cantsave Посмотреть сообщение
Сам разобрался. Еще вчера сделал.
правильно сделано, но есть некоторые замечания. если пути одинаковые то лучше вынести их за пределы массива, чтобы указать их 1 раз вместо n-ого количества раз в массиве как показано ниже

PHP
1
$img=Array('1st.png','2nd.png','3rd.png','45.png','45.png','45.png','45.png','45.png','45.png','45.png','45.png',);
и далее
PHP
1
<img src='pic/yua/$img[$i]' border='0' alt=''>
ну а конкретно в вашем случае я бы вовсе отказался от массива. Для этого в папке сохраните изображения с названием 1.png, 2.png, 3.png, 4.png и т.д. и можно уже использовать их без всякого массива. Счетчик начинаем не с 0 а с 1 чобы соответствовало месту.
PHP
1
$i=1;
само изображение формируем так
PHP
1
<img src='pic/yua/$i.png' border='0' alt=''>
и отступы)
PHP
1
2
3
4
5
6
7
8
{echo "
<tr>
  <td width='37px' align='center' style='border: none; padding-bottom:10px'><img src='pic/yua/$i.png' border='0' alt=''></td>
  <td width='100px' align='left' style='border: none;padding-bottom:10px'>&nbsp;<a href='http://10.60.26.230/userdetails.php?id={$row['owner']}'>{$row['username']}</a>&nbsp;</td>
  <td width='37px' align='center' style='border: none;padding-bottom:10px'>&nbsp;{$row['cnt']}&nbsp;</td>
</tr>";
$i++;
}
Обратите внимание на то, что я не в одну строку написал а разбил на несколько строк HTML. Старайтесь писать "красиво" а не в одну строчку, чтобы читать его было удобно, ведь рано или поздно, вы сами в нем запутаетесь.
1
Заблокирован
07.09.2013, 07:42
Цитата Сообщение от Милый Враг Посмотреть сообщение
массив цветов
А если захотите вывести в топ "оккуратно" не пять, а десять самых активных воров интеллектуального контента?

Если захотите то проще простого применять модел hsl.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
07.09.2013, 08:48
Цитата Сообщение от sqlnub Посмотреть сообщение
Если захотите то проще простого применять модел hs
а как быть со старыми браузерами? На сколько я знаю IE 5-8 не поддерживают данную модель. Или я путаю?
0
Заблокирован
07.09.2013, 20:55
Вы ничего не путаете. Даже 8-й ничего не знает про hsl. Однако я очень сомневаюсь что творцы и адепты копилефта пользуются замшелыми браузерами. Даже если к вам заедет поборник копирайта на своей трахоме, потому что у него денег не хватило на новье - ему же хуже. Не увидит всей "оккуратной" красоты пятерки.

Добавлено через 4 минуты
Не по теме. Это мы, да, такие. Сидит человек, понимаешь, на торрентах, раздает тыренное, качает тыренное - но все самое свежеее и актуальное. Откуда у него вообще мысль о тех убогих, которые еще не скачали с торрента последнюю винду со встроенным последним браузером. Он же вообще не должен до такого догадаться - но с первой же попытки попадает точно в цель: а что будет с убогими?

Кладите на убогих и прогресс пойдет быстрее.

Добавлено через 2 минуты
Впрочем градиент в rgb тоже можно рассчитать по количеству остановок.
0
Телепат
 Аватар для Милый Враг
724 / 118 / 8
Регистрация: 28.04.2009
Сообщений: 442
08.09.2013, 18:51
Цитата Сообщение от sqlnub Посмотреть сообщение
Кладите на убогих и прогресс пойдет быстрее.
Этим вы делаете хуже не им а себе.. Они то уйдут и найдут нужное в др. месте но к вам уже не вернуться. Тем более что таких как вы говорите убогих оочень много. Я до сих пор сталкиваюсь в офисах с древними компьютерами, у которых даже XP SP1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2013, 18:51
Помогаю со студенческими работами здесь

MySQL с таблицами на ntfs
Как можно использовать одни и те же таблицы в виндовсе и в линуксе? Ubuntu 10.10 MySQL 5.1.49 Сейчас у меня таблицы находятся в...

MySQL запрос c двумя таблицами?
Всем привет. Допустим, у меня есть таблица с users пользователями, в ней такие поля: id, login, password. И также есть таблица blacklist,...

Работа с таблицами расположенными в Mysql
База данных расположена в MySql Подчинённая таблица через ODBC подключена к Аксес Две таблицы связаны по полю &quot;idsub&quot; 1:М. ...

Связи между таблицами в Mysql
Всем привет! При создании схемы БД, наткнулся на такой вопрос: Например у нас есть таблица пользователей и таблица новостей. Пускай у...

PHP + MySQL с двумя таблицами
Пользователь 20 присылает приглашение пользователю 19, и у пользователя 19 приходит соответствующая кнопка принять или отклонить. После...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru