sqlite объединяет выбранные результаты для поиска - PullRequest
0 голосов
/ 06 февраля 2012

Хорошо, вот мои две таблицы.

CREATE TABLE [cards] (
  [id] TEXT PRIMARY KEY, 
  [game_id] TEXT NOT NULL,
  [set_id] TEXT CONSTRAINT [id_set_id] REFERENCES [sets]([id]) ON DELETE CASCADE ON UPDATE CASCADE MATCH SIMPLE NOT DEFERRABLE INITIALLY IMMEDIATE, 
  [name] TEXT NOT NULL, 
  [image] TEXT NOT NULL);

CREATE TABLE [custom_properties] (
  [id] TEXT PRIMARY KEY, 
  [card_id] TEXT CONSTRAINT [id_card_id] REFERENCES [cards]([id]) ON DELETE CASCADE ON UPDATE CASCADE MATCH SIMPLE NOT DEFERRABLE INITIALLY IMMEDIATE,
  [game_id] TEXT CONSTRAINT [id_game_id4] REFERENCES [games]([id]) ON DELETE CASCADE ON UPDATE CASCADE MATCH SIMPLE NOT DEFERRABLE INITIALLY IMMEDIATE, 
  [name] TEXT NOT NULL, 
  [type] INTEGER NOT NULL, 
  [vint] INTEGER, 
  [vstr] TEXT);

Что я хотел бы сделать, так это выполнить поиск, в котором собраны все данные из строки cards, а затем добавлен столбец с именемэто (where custom_properties.card_id == cards.id).name.Тогда я бы хотел, чтобы его значение было vint, если type == 1, иначе vstr.

Итак, вот пример набора данных

карт

|id | game_id | set_id | name | image|
+---+---------+--------+------+------+
| a | asdf    | fdsaf  |loler | blah |
+------------------------------------+

custom_properties

| id | card_id | game_id | name | type | vint | vstr |
+----+---------+---------+------+------+------+------+
| f  | a       | asdf    | range| 1    | 12   |      |
| b  | a       | asdf    | rank | 0    |      | face |
+----+---------+---------+------+------+------+------+

результирующая таблица будет выглядеть следующим образом: , где столбцы range и rank получены из custom_properties.name

|id | game_id | set_id | name | image | range | rank |
+---+---------+--------+------+-------+-------+------+
|a  | asdf    | fdsaf  | loler| blah  | 12    | face |
+---+---------+--------+------+-------+-------+------+

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

На самом деле это невозможно сделать.

0 голосов
/ 06 февраля 2012

попробуйте это:

SELECT  Cards.id,
        Cards.game_id,
        Cards.set_id,
        Cards.name,
        Cards.id,
        Cards.image,
        CASE 
            WHEN Custom_Properties.type = 1 THEN 
                 Custom_Properties.vint
            ELSE 
                 Custom_Properties.vstr 
        END as Range
        Custom_Properties.vstr as rank
FROM Cards INNER JOIN Custom_Properties
        ON Cards.id = Custom_Properties.card_ID
WHERE Cards.Name = 'loller'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...