SQL-запрос - Mastertalk
SQL-запрос
  • Дано:
    Таблица А.
    id pid name

    Таблица B
    pid (UNIQUE) email

    A.pid = B.pid

    В таблице A куча записей.


    Задача:
    Сделать выборку по последним записям в таблице А с различным pid (то есть последние N записей и pid не должен повторяться)


    Поможет кто-нибудь?

    Мои решения не работает:(

    1. SELECT DISTINCT `pid`, `name`, `id` FROM `photos` ORDER BY `id` DESC LIMIT N
    2. SELECT DISTINCT `pid`, `name`, `id` FROM `photos` GROUP BY `pid` ORDER BY `id` DESC LIMIT N

  • По идее всё должно работать с первым вариантом. Что выводит напишите.
  • Код
    SELECT DISTINCT `pid`, `name`, `cid`, `city_id`, `title`, `id` FROM `photos` GROUP BY `pid` ORDER BY `id` DESC  LIMIT 10

    395     y_0ddf9e91.jpg     6     1           3020
    394     _dsc0291.jpg     6     351           2995
    394     _dsc0068.jpg     1     351           2973
    363     0007_nef.jpg     11     3           2963
    390     0003.jpg     1     10           2956
    389     dsc08999.jpg     6     1     Летнее настроение     2954
    126     y_2310a948.jpg     8     973     художник     2951
    126     y_b810a3ff.jpg     6     973     Мариша     2948
    387     photo_0652.jpg     1     3     На просторах России     2939
    245     633___kopiya___kopiya.jpg     10     680           2937
  • Решение:
    SELECT * FROM `photos` WHERE `pid` IN (SELECT DISTINCT `pid` FROM `photos` ORDER BY `id` DESC) AND `cid` IN (SELECT DISTINCT `cid` FROM `photos` ORDER BY `id` DESC) GROUP BY `pid`,`cid` ORDER BY `id` DESC

Привет, незнакомец!

Похоже, Вы новенький! Чтобы начать обсуждение, кликните на одну из кнопок ниже ;)

Войти с помощью OpenID

Категории

В этой теме: