0

私の質問は 3 つの部分で構成されています。

最初の部分:
値に基づいて行を生成する方法はありますか?

例:
各家族に、家族の人数に基づいた数のバウチャーを提供したいと考えていfamily_members_countます。各バウチャーには一意の ID が必要です。

ベーステーブル:

id name family_members_count
1  fadi 2
2  sami 3
3  ali  1

結果:

family_id     name      voucher_id 
1             fadi      121
1             fadi      122
2             sami      123
2             sami      124
2             sami      125
3             ali       126

第 2 部:
ticket_id 複合キーを制御できますか? voucher_idはこうであってほしい

(location)(cycle)(sequence 5 digits)

北 = 08 で、2 番目のサイクルにいる場合、次のようになります。

080200001
080200002

... 等々。

第 3 部:
MS Access 2010 SQL と PostgreSQL 9.1 SQL の両方でソリューションが必要です。

4

1 に答える 1

1

質問1

を使用しgenerate_series()ます。(今後のバージョン 9.3 では、キーワード を探しますLATERAL。)

SELECT id AS family_id
      ,name
      ,120 + generate_series(1, family_members_count) AS voucher_id 
FROM fam;

-> sqlfiddle デモ

質問2

SELECT id AS family_id
      ,name
      ,location 
       || to_char(cycle, 'FM00')
       || to_char(generate_series(1, family_members_count), 'FM00000')
          AS voucher_id 
FROM fam2;

-> sqlfiddle デモ

質問 3

申し訳ありませんが、私は 10 年前に自分のシステムから MS Access を削除してしまい、後戻りすることはありませんでした。他の誰かが記入するかもしれません。私はそれがそれほど単純になるとは思えません。

于 2012-12-06T10:39:18.647 に答える