SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.04.2010 05:35:31

vengr
Участник
Зарегистрирован: 28.04.2010
Сообщений: 4

Две таблицы в одном запросе.

Всем привет.
Вообщем такой вопрос у меня ,сам не могу дойти ,может поможете.
Вообщем пишу модик.
Есть запрос в базу :
$res = sql_query("SELECT torrents. *  FROM torrents ORDER BY id DESC LIMIT 0 , 5 ") or sqlerr(__FILE__, __LINE__);
$num = mysql_num_rows($res);

Им я вывожу торенты ,последние 5... , Но там странная связка , и получается что сколько раздающих,качающих в таблице trackers ,мне нужно ,что типо :" SUM(trackers.seeders) AS seeders, SUM(trackers.leechers) AS leechers " из неё выдернуть ,+ привязка по ид ,поэтому надо как то впихнуть этот запрос ,в тот что у меня изначально выложен.

Если очень интересно ,или не совсем понятно могу выкинуть сюда весь код...

Неактивен

 

#2 28.04.2010 06:27:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Две таблицы в одном запросе.

Весь код не надо smile

Я правильно понимаю, что Вы хотите что-то такое?

SELECT t.*, COUNT(s.*), COUNT(l.*)
FROM torrents t
JOIN seeders s ON t.id = s.torrent_id
JOIN leechers l ON t.id = l.torrent_id
GROUP BY t.id
ORDER BY t.id DESC
LIMIT 5

Неактивен

 

#3 28.04.2010 13:41:18

vengr
Участник
Зарегистрирован: 28.04.2010
Сообщений: 4

Re: Две таблицы в одном запросе.

Что-то не получилось...

Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*), COUNT(l.*) FROM torrents t JOIN seeders s ON t.id = s.torrent_id JOIN leeche' at line 1

в /var/www/vhosts/мойдомен,ру/httpdocs/blocks/block-torrents.php, линия 14

Запрос номер 13.

Отредактированно vengr (28.04.2010 13:42:39)

Неактивен

 

#4 28.04.2010 17:32:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Две таблицы в одном запросе.

Да, моя бага. Более того, видимо, в 6 утра плохо работали мозги уже — там ошибка
в логике — такая группировка просто не будет работать sad

SELECT t.*,
  (SELECT COUNT(*) FROM seeders WHERE torrent_id = t.id) seeders,
  (SELECT COUNT(*) FROM leechers WHERE torrent_id = t.id) leechers
FROM torrents t
ORDER BY t.id DESC
LIMIT 5;

Неактивен

 

#5 28.04.2010 19:01:42

vengr
Участник
Зарегистрирован: 28.04.2010
Сообщений: 4

Re: Две таблицы в одном запросе.

Всё равно не выходит. Попробую сам разобратся.

Неактивен

 

#6 28.04.2010 21:26:01

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Две таблицы в одном запросе.

Так должно работать, какую ошибку пишет?

Неактивен

 

#7 28.04.2010 22:19:47

vengr
Участник
Зарегистрирован: 28.04.2010
Сообщений: 4

Re: Две таблицы в одном запросе.

Ответ от сервера MySQL: Table 'admin_test.seeders' doesn't exist

в /var/www/vhosts/домен/httpdocs/blocks/block-torrents.php, линия 13

Запрос номер 13.

Ещё разок пояснюsmile

есть уже запрос в таблицу torrents
$res = sql_query("SELECT torrents. *  FROM torrents ORDER BY id DESC LIMIT 0 , 5 ") or sqlerr(__FILE__, __LINE__);

который у меня выводит 5 последних торрентов. Но в этой таблице нет сид/лич . Они в таблице trackers
Чтобы вывести я делаю так -  SUM(trackers.seeders) AS seeders, SUM(trackers.leechers) AS leechers , из таблицы trackers / Мне надо всё в один запрос сделать я так думаю что то типо " GROUP BY torrents.id " в конце запроса.
Что бы можно в коде уже сидов и лич дёргать типо - $row['seeders']

Отредактированно vengr (28.04.2010 22:28:56)

Неактивен

 

#8 29.04.2010 06:10:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Две таблицы в одном запросе.

Структуру табличек покажите тогда, пожалуйста.

Если я правильно могу телепатировать, то с Вашей структурой надо

SELECT t.*, tr.*
FROM torrents t, trackers tr
WHERE t.id = tr.torrent_id
ORDER BY t.id DESC
LIMIT 5

Но смысла в такой структуре я не вижу sad

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson