|
Timur ↓
|
 |
|
30 Март, 2009, 06:08:31
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
Есть таблицы photos и albums. Нужно выбрать список альбомов и + по одной фотографии для каждого (любая случайная фотка). Ничего умнее чем группировать по album_id не придумал:
SELECT * FROM albums
LEFT JOIN photos ON (albums.album_id=photos.photo_id)
GROUP BY albums.album_id
Получается, что сначала будут выбраны все записи из photos, сделается join с albums, потом сгруппируются. Громоздко как-то.
Ещё можно, конечно, добавить в albums поле, типа main_photo_id и держать там значение фотки. Просто может есть проще вариант?
|
|
|
|
|
Записан
|
|
|
|
|
md5 ↓
|
 |
|
30 Март, 2009, 06:14:59 , спустя 6 минут 28 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо Карма: не нужна
Сообщений: 10494 Сила слова: 1.19
|
LEFT JOIN
|
|
|
|
|
Записан
|
8: Undefined variable: str Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php Строка: 18 adw0rd: мудень блять, я уже фиксить стал эту фигню :) md5: вуахахахаха
|
|
|
|
adw0rd ↓
|
 |
|
30 Март, 2009, 06:17:21 , спустя 2 минуты 22 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
Timur, дай примерную структуру, а лучше дамп
|
|
|
|
|
Записан
|
|
|
|
|
Timur ↓
|
 |
|
30 Март, 2009, 06:20:52 , спустя 3 минуты 31 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
LEFT JOIN
?
Timur, дай примерную структуру, а лучше дамп
убрал всё лишнее CREATE TABLE albums (
album_id mediumint(9) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (album_id)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='Фотоальбомы' AUTO_INCREMENT=5 ;
CREATE TABLE photos (
photo_id int(11) NOT NULL AUTO_INCREMENT,
album_id mediumint(9) DEFAULT NULL,
description varchar(255) NOT NULL,
PRIMARY KEY (photo_id),
KEY album_id (album_id)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='Фотографии' AUTO_INCREMENT=26 ;
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
30 Март, 2009, 06:26:04 , спустя 5 минут 12 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: 20780 Сила слова: 1.66
|
я б сливал альбомы с РАНДОМНО отсортированными КАРТИНКАМИ, с ДИСТИНКТОМ ПО АЛЬБУМ АЙДИ - будет мгновенно на любой бд при проставленых индексах :)
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
md5 ↓
|
 |
|
30 Март, 2009, 06:34:52 , спустя 8 минут 48 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо Карма: не нужна
Сообщений: 10494 Сила слова: 1.19
|
LEFT JOIN
?
тупанул, пардон
|
|
|
|
|
Записан
|
8: Undefined variable: str Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php Строка: 18 adw0rd: мудень блять, я уже фиксить стал эту фигню :) md5: вуахахахаха
|
|
|
|
Timur ↓
|
 |
|
30 Март, 2009, 06:39:48 , спустя 4 минуты 56 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
я наверное туплю как всегда, но не догоняю
SELECT DISTINCT album_id, photo_id FROM photos - DISTINCT сработает по обоим полям и album_id будут повторяться (т.е. он все записи выберет)
SELECT DISTINCT album_id FROM photos - я не получу ID фоток
Видимо тут без группировки никак.
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
30 Март, 2009, 07:00:49 , спустя 21 минуту 1 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
тупишь как всегда
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Timur ↓
|
 |
|
30 Март, 2009, 10:56:49 , спустя 3 часа 56 минут
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
Продолжаю тупить. Ситуация — когда просматриваем фотографию, нужны ссылки на ещё две — предыдущую и следующую. Фотографии отсортированы по дате загрузки и раскиданы по альбомам. Таблица
- photo_id - ID фотки
- album_id - ID альбома
- loaddate - время загруки (int)
У меня получилось только через 3 запроса, причем два из них че-то совсем не нравятся. Что посоветуете, кроме как убиться апстену?
|
|
|
|
« Последнее редактирование: 30 Март, 2009, 10:58:52 от Timur »
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
30 Март, 2009, 10:59:18 , спустя 2 минуты 29 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
можно в юнион селект завернуть чтобы было одним запросом - сократить время парсинга и сетевого конекта. по теме - я хз как делают по хорошему до и после фотографии, никогда не задумывался такими задачами ... только в 2 селекта в голоу приходт, ил как я сказал - селект + юнион селект
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Timur ↓
|
 |
|
30 Март, 2009, 11:04:38 , спустя 5 минут 20 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
с юнионом я кстати так и сделал, получилась вот такая хня:
$sql = 'SELECT MAX(photo_id) AS photo_id FROM photos ' .
"WHERE album_id=$album_id AND loaddate<$loaddate " .
'UNION ' .
'SELECT MIN(photo_id) AS photo_id FROM photos ' .
"WHERE album_id=$album_id AND loaddate>$loaddate";
неохота 2 раза прогонять всю таблицу, чтоб выбрать 2 значения
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
30 Март, 2009, 11:06:34 , спустя 1 минуту 56 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: 20780 Сила слова: 1.66
|
ахуеть ты жжешь.
select * From photos where alubumid = 10 and time < $time order BY time DESC LIMIT 1.
и не надо прогонять всю таблицу. если индексы расставишь, то это запрос за 0
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Timur ↓
|
 |
|
30 Март, 2009, 11:14:53 , спустя 8 минут 19 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
пробовал так сначала, но выдает:
#1221 - Incorrect usage of UNION and ORDER BY
|
|
|
|
|
Записан
|
|
|
|
|
Timur ↓
|
 |
|
30 Март, 2009, 11:16:09 , спустя 1 минуту 16 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
NullPointerException
Группа: в ухо Карма: 56
Сообщений: 1009 Сила слова: 5.55
|
а епт.. опять ступил...
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
30 Март, 2009, 11:16:15 , спустя 6 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: 20780 Сила слова: 1.66
|
эмм .... ну попробуй проджойнить или тп.. у тебя с скл слабо ага? просто чувствуется :(
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|