MYSQL Выбор нескольких значений из одного столбца в виде строки - PullRequest
0 голосов
/ 16 октября 2011

У меня есть две таблицы

table COMMUNITY
  id, 
  name, 
  etc.

table PROPERTY
  id,
  community_id,
  type,
  price,
  rate,
  etc.

Существует четыре возможных типа свойств, и у сообщества может быть информация для одного или нескольких различных типов.

Я пытаюсь выяснить, какобъединить информацию для каждого сообщества в один ряд.Например, я мог бы получить строку, которая включает

community.id, community.name, condo.price, condo.rate, town_home.price, town_home.rate

Конечно, нет таблиц для condo или town_home, тип свойства представлен в таблице свойств столбцом, и у сообщества может быть несколько строк свойств.

Моей первой мыслью былоиспользовать несколько объединений на столе с псевдонимами, но я не могу получить ничего, что работает должным образом.

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 16 октября 2011

Вы можете использовать левое соединение для этого.

SELECT c.id, c.name, condo.price, condo.rate, town_home.price, town_home.rate
FROM Community c
LEFT JOIN Property condo ON condo.community_id = c.id AND condo.type = 'condo'
LEFT JOIN Property town_home ON town_home.community_id = c.id AND town_home.type = 'town_home'
1 голос
/ 28 мая 2012

Я из тех людей, которым не очень нравится использовать объединения, возможно, потому, что я не вижу особой причины для их использования или потому, что мне это не нужно.В любом случае, я бы сказал так:

Поскольку у вас есть связь между двумя таблицами, вы можете использовать их для получения необходимых данных, если у вас есть эта ссылка.Вы можете взять любое поле, какое захотите.

Итак, вы сказали, что хотите поля: community.id, community.name, condo.price, condo.rate, town_home.price, town_home.rate

    SELECT
        community.id,
        community.name,
        condo.price,
        condo.rate
    FROM
        community, property condo
    WHERE
        community.id = condo.community_id;

Это должно решить это.

0 голосов
/ 16 октября 2011

Попробуйте:

SELECT * FROM community LEFT OUTER JOIN property ON community.id = property.community_id;

Это должно объединить две таблицы в поле ID, поэтому у вас должна быть одна полная строка со всей информацией.если что-либо имеет значение null, оно также должно присутствовать в строке.Если несколько свойств перечислены с одним и тем же идентификатором сообщества, все они должны появиться в результате.

PS - я использую PostgreSQL, а не MYSQL, поэтому синтаксис может немного отличаться.Дайте мне знать, как это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...