奇妙なタイトルは申し訳ありませんが、達成したいものを要約するのは簡単ではありません。私の目標は、「任意の」種類のデータを格納する一般的なテーブル構造を持ち、それを...自分自身で記述して、クエリの出力としてカスタムテーブルを取得することです。フィールド型とタイトルの値を持つカスタム構造体を返すMySQLクエリ
は、私がこのような構造を持つテーブルがある:
id (INT)
idItem (INT)
fieldTitle (VARCHAR)
field (VARCHAR)
value_label (VARCHAR)
value_text (TEXT)
value_bool (TINYINT)
value_int (INT)
value_float (FLOAT)
テーブル内のデータの例:
idItem (INT)
title (VARCHAR)
description (TEXT)
visible (TINYINT)
price (FLOAT)
:
id idItem fieldTitle field value_label value_text value_bool value_int value_float
--------------------------------------------------------------------------------------------------------------
1 15 title value_label My Product One NULL NULL NULL NULL
2 15 description value_text NULL Very good product... NULL NULL NULL
3 15 visible value_bool NULL NULL 1 NULL NULL
4 15 price value_float NULL NULL NULL NULL 19.9
5 16 title value_label My Product Two NULL NULL NULL NULL
6 16 description value_text NULL Just an hidden product. NULL NULL NULL
7 16 visible value_bool NULL NULL 0 NULL NULL
8 16 price value_float NULL NULL NULL NULL 30
が、私はこのような何かを持つ終了します
出力データの例:
idItem title description visible price
15 My Product One Very good product... 1 19.9
16 My Product Two Just an hidden product. 0 30
私はこれを行うことをおすすめします。 RDBMSであるMySQLは、基本的にこれを内部的に体系化しています。キーの関係、索引付け、または他のRDBMS機能を簡単に管理することはできないため、動的スキーマはほとんどの場合難しさと苦痛を軽減します。 –
'ダイナミックなスキーマはほとんどの場合難易度と痛みの道にあなたを導くでしょう - >私は絶対に同意します。あなたがすでにその道にいる証拠は、あなたが非常に単純な情報を取得しなければならなかったこととStackOverflowに尋ねる必要があったということです:) –
最初の答えとコメントありがとう!私の問題は、管理者が自分のカスタムフィールドを追加するCMSを開発しているので、私のテーブルのフィールドの「固定セット」から始めたくないということです(これは、lables、長いテキスト、yes/no、 (例えば、製品、連絡先、ニュースなど)を作成するために、挿入する列の数と数を予測することはできません。たぶん、あらゆる種類のデータ(ブーリアン、int、テキスト)のための*テーブルを作成し、それらのコレクションに要素を接続するための外部キーを作成する方が良いでしょうか? – flip79