Пуля — дура. Пых — молодец.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 23 Май, 2012, 05:42:31

Страниц: [1] 2 3
Печать
Автор Тема: JOIN и GROUP  (Прочитано 2877 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Timur    ↓ 
30 Март, 2009, 06:08:31
НЕ ХУЕТА! ХУЕТА!

NullPointerException
Группа: в ухо

Карма: 56
Сообщений: 1009
Сила слова: 5.55

Есть таблицы photos и albums. Нужно выбрать список альбомов и + по одной фотографии для каждого (любая случайная фотка). Ничего умнее чем группировать по album_id не придумал:
SQL
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, дай примерную структуру, а лучше дамп
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Timur    ↓ 
30 Март, 2009, 06:20:52 , спустя 3 минуты 31 секунду
НЕ ХУЕТА! ХУЕТА!

NullPointerException
Группа: в ухо

Карма: 56
Сообщений: 1009
Сила слова: 5.55


LEFT JOIN
?
 

Timur, дай примерную структуру, а лучше дамп
убрал всё лишнее
SQL
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

я наверное туплю как всегда, но не догоняю
SQL
SELECT DISTINCT album_id, photo_id FROM photos
- DISTINCT сработает по обоим полям и album_id будут повторяться (т.е. он все записи выберет)
SQL
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

с юнионом я кстати так и сделал, получилась вот такая хня:
 
PHP
$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.
Страниц: [1] 2 3
Печать
 

Перейти в: