Комбинирана заявка

Lumix

Registered
Здравейте колеги,

тук нещо зацепих на една комбинирана заявка и не мога да отлепя. Става въпрос за следното:

[sql]$query = mysql_query("SELECT users.id AS userid, users.username AS username, users.uploaded AS upload, users.downloaded AS download, users.warned AS warnded, users.class AS class, torrents.id AS tid, UNIX_TIMESTAMP(torrents.added) AS added FROM users, torrents WHERE class = '3' ORDER BY added DESC");
while ($res = mysql_fetch_array($query)) {
.
.
.
}
[/sql]

Има се предвид следното нещо:
Трябва да се вземе потребителско ID, потребителско име, качено и свалено на потребителя, дали е предупреден потребителя и последно качения торент на потребителя като цялото това нещо се сортира по последния качен торент (дататайм). Пробвах да го пиша по най-различни начини - това е последната заявка, която поддадох към mysql-а и стана лудница.

Това, което в момента съм го поддал горе като код е пълна лютеница и знам, че няма да тръгне просто вече съм толкова изтрещял, че....

Благодаря предварително.
 
Каква грешка ти изкарва?
Погледнах ти кода видях, че имаш 2 различни работи:
$query = mysql_query("SELECT users.id AS userid, users.username AS username, users.uploaded AS upload, users.downloaded AS download, users.warned AS warnded, users.class AS class, torrents.id AS tid, UNIX_TIMESTAMP(torrents.added) AS added FROM users, torrents WHERE class = '3' ORDER BY added DESC");
while ($res = mysql_fetch_array($query)) {
.
.
.
}
 
Това е правописна грешка не е от толкова голямо значение в случая. Проблем не ми вади кода просто зарежда цялата таблица с потребителите, а не тези дето са с клас 3-ти и си зарежда и става мазало една огромна таблица. Вади си някви резултати там тоя таймстампа не ми го зачита и е мазало
 
[sql]WHERE users.class = '3'[/sql] ;)
Другото е да направиш:
[sql]
FROM users
JOIN torrent ON torrents.user_id=users.user_id
WHERE users.class=3
[/sql]
Като само заменяш user_id с твойта колона :)
 
Колега, сега определено е по-добре остана само една подробност. Потребителя трябва да го вади само по веднъж, а в момента за всеки качен торент на потребителя ми вади потребителя. Целта на цялото начинание е да покаже последно качения торент на потребителя.
 
[sql]FROM users
JOIN torrent ON torrents.user_id=users.user_id
WHERE users.class=3
ORDER BY torrents.date_added DESC
LIMIT 1[/sql] Така ще ти изкара само 1 ред. Като date_added е колоната, в която записваш датата на добавяне на торента :)
 
Eма пак ще изкара само един ред. На мен ми трябва на всеки потребител да има нов ред. А ако махна лимита ми прави на всеки торент нов ред.
 
ivo_pi4a каза:
[sql]FROM users
JOIN torrent ON torrents.user_id=users.user_id
WHERE users.class=3
ORDER BY torrents.date_added DESC
LIMIT 1[/sql] Така ще ти изкара само 1 ред. Като date_added е колоната, в която записваш датата на добавяне на торента :)
Така ще му върне само един запис.

FROM users
JOIN torrent ON torrents.user_id=users.user_id
WHERE users.class=3
GROUP BY users.user_id
ORDER BY torrents.date_added DESC
 

Back
Горе