私はSQLとPHPを初めて使用しています。私は、エンドユーザがHTMLフォームにテキストを入力する必要があります。これは、MySQLデータベースに格納しています。後で、ユーザーデータを持つdb内のすべてのテーブルにクエリを実行し、連結された文字列を取得します。私はこのクエリで特定のIDに基づいて、1つの文字列のみを連結することができるよ今Click for ImageMySql列を連結して連結した文字列を作成する
:ここに明確に理解するため
は私のデータの画像および所望の結果である
私に結果を与えるselect group_concat(text order by T.did separator ' ') as TTT
from (
select l.dimgroupid as did, d.*, l.dimlevelid as id, l.dimlevelvalue,
concat(d.dimensiontext," ",l.dimlevelvalue) as text
from dimensionlevel l
join dimension d on d.dimensionid = l.dimid
join dimensiongroup g on g.groupid = l.dimgroupid) as T
where T.id=0;
| TTT |
--------------------------------
| A 20 year old Man is Fresher |
私はID上でループを使うことができますが、問題はIDが固定されていないことです。
注:「n」個の寸法とレベルがあります。ここで
は私が照会しようとしているデータのSQLフィドルです:SQL Fiddle
SQLクエリ。あなたは 'group by 'を使うことはできませんし、次元数(文章の長さ)を無制限にすると、' join'を使うことはできません。そして、結果セットはかなり速く大きくなるかもしれません。また、あなたは現在あなたの現在のクエリであなたのIDを変更するだけで、すべての文を得ることができるのかと疑います。しかし、事前にどれくらいの数があるかを知らなくても、そこですべてのグループ、レベル、idをループするだけで簡単にPHPで行うことができるはずです。 – Solarflare
ありがとうございます。はい、Dimensionsと同じ考えをしていましたが、出力を得るレベルが固定されていません。私はPHPを使用してそれを取り除くことができるかどうかを知らせます。 – Shades
完全性のために:mysqlのループももちろん使用できます(ストアドプロシージャなど)。PHPで行う必要はありません。すべてのレベルでデータを結合することによって、(一時的に)テーブルに(潜在的に大きな)結果を作成する必要があります。実際のテーブルにデータを格納することを目的としている場合は、これが適切な解決策である可能性があります。また、phpまたはmysqlの両方でdynamic sql(aループを使用して結合を構築する)を使用することもできます。また、他のデータベース(ポストグルのような)はこれに(再帰をサポートするので)これを行うことができます。しかし、(私はまだ考えていますが)あなたはMySQLの単一の通常のクエリでそれを行うことはできません。 – Solarflare