[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос для фоток.
Страницы: 1, 2
Forever
Есть аблица с фотографиями photos:

num |user |date |name |rating |album |hidden имя - путь к файлу.
1 vasya a
2 vasya a
3 vasya a

4 vasya b
5 vasya b
6 vasya b

7 masha c
8 masha c
9 masha c

10 masha d
11 masha d
12 masha d

Как построить запрос, чтобы в итоге вывести на странице все альбомы пользователя и рядом с каждым альбомом последнее загруженное в него фото?

то есть выбрать строки

3 vasya a
6 vasya b

9 masha c
12 masha d



Отталкиваясь от этого:
"SELECT name, album FROM photos where user='".$login."'"


мать твою, неправильно отобразилось.

1 vasya a - это num| user | album соответственно.
Forever
пишу
SELECT name,  album, MAX(num) AS last FROM photos where user='".$login."' and hidden IS NULL group by album"

и получаю альбом, имя и и самый последний номер в альбоме, но нэйм не принадлежит этому номеру.
zelenuy
Forever
Ну так ты сам попросил максимальный номер вот он тебе и дал его)
MAX(num)


Чем тебя этот запрос не устраивает?
SELECT name, album, num FROM photos where user='".$login."'
Forever
Цитата (zelenuy @ 15.03.2014 - 13:20)
Forever
Ну так ты сам попросил максимальный номер вот он тебе и дал его)
MAX(num)


но почему нейм не относится к этому номеру? То есть, если у меня в таблице две картинки:

num =1 name=рис.1 и num =2 name=рис.2, то получаю num=2 name=рис.1
zelenuy
Forever
Потому что ты ему сказал дай максимальный num он его дал а вот про name ты ему не объяснил что он должен принадлежать этому num
Valick
Цитата
но почему нейм не относится к этому номеру?

потому что это надо указывать в условии

_____________
Стимулятор ~yoomoney - 41001303250491
Forever
Цитата (zelenuy @ 15.03.2014 - 13:32)
Forever
Потому что ты ему сказал дай максимальный num он его дал а вот про name ты ему не объяснил что он должен принадлежать этому num

А как?)
Forever
Цитата (Valick @ 15.03.2014 - 13:33)
Цитата
но почему нейм не относится к этому номеру?

потому что это надо указывать в условии

А как?)))
zelenuy
Forever
Сделай два запроса, в первом вытащи максимальный num, а во втором уже пляши от него, объединить эти два запроса чета не получается у меня
sergeiss
Вот так попробуй. Запрос не тестил, но, вроде как, должен работать.

$sql = 
"SELECT name, album,
(select max(num) from photos where user= '
$login' and hidden is null and num = p.num) AS last
FROM photos p where user='
$login' and hidden IS NULL
group by album"


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
zelenuy
Forever
SELECT `name`, `album`, `num` FROM `photos` WHERE `num` = (SELECT MAX(`num`) FROM `photos` WHERE `name` = '$login')
Forever
Цитата (sergeiss @ 15.03.2014 - 17:22)
Вот так попробуй. Запрос не тестил, но, вроде как, должен работать.

$sql = 
"SELECT name, album,
(select max(num) from photos where user= '
$login' and hidden is null and num = p.num) AS last
FROM photos p where user='
$login' and hidden IS NULL
group by album"

Номер теперь соответствует имени, но он не максимальный.
Forever
Цитата (zelenuy @ 15.03.2014 - 18:04)
Forever
SELECT `name`, `album`, `num` FROM `photos` WHERE `num` = (SELECT MAX(`num`) FROM `photos` WHERE `name` = '$login')

Получается строка с максимальным номером.

Блин, месяц назад закончил кучс по sql, шарил неплохо, а щас уже ничего не помню))
sergeiss
Попробуй такой запрос, с группировкой в подзапросе

$sql = 
"SELECT name, album,
(select max(num) from photos where user= '$login' and hidden is null and num = p.num group by album) AS last
FROM photos p where user='$login' and hidden IS NULL
group by album"


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
SELECT name, album, num FROM photos RIGHT JOIN (SELECT max(num) num FROM photos WHERE user= '$login' and hidden is null GROUP BY album) USING (num)

это для одного пользователя
SELECT num, user, album, name FROM photos RIGHT JOIN (SELECT max(num) num FROM photos WHERE hidden is null GROUP BY user, album) USING (num)

это для всех пользователей и их альбомов

а в целом БД не нормализована

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.