全体の状況は次のとおりです:
テーブル A の構造
ID 名情報
1 列 1 (ストレージ スタイルは a:{s:6:"picid";s:2:"74";s:9:"text" ; s:1:"ストレージコンテンツエリア";})
2 列 2 (ストレージスタイルは:{s:6:"picid";s:2:"75";s:9:"text";s :1 : "ストレージコンテンツ領域";})
B テーブル構造
ID URL
74 ピクチャパス
まず、クエリを通じて、テーブル A の情報の picid の ID 番号 74,75 を持つ配列が取得されます
出力スタイルは次のとおりです:
Array
(
[0] => 74
[1] => 75
)
次に、テーブル B の ID 74 と 75 のデータをクエリします
次に、これら 2 つのテーブルの内容を関連付けて出力するにはどうすればよいでしょうか?
出力結果は次のとおりです。
配列
(
[0] => 配列
( gt; 列 1
=> info のテキストの内容
=>列 1
=& gt;の内容text in info
)
….
ディスカッションへの返信 (解決策)
直接 SQL は確認するのが簡単ではありません。プログラムを使用することをお勧めします。推奨 プログラムを使用して実装します。
実行方法
a:{s:6:"picid";s:2:"74";s:9:"text";s:1:"storage content area" ;} これはシリアル化された文字列ですが、間違っています
まず、クエリを通じてテーブル A の picid ID 番号 74 と 75 の配列を取得します
列 1 は 74 だけではないでしょうか?クエリはテーブル A の情報で picid ID 番号 74 と 75 の配列を取得しました。これはどこから来たのでしょうか? それは忘れましょう。 :2:"74";s:9:"text";s:1:"storage content area";} これはシリアル化された文字列ですが、間違っていますinfo 内のテキストの内容を抽出する式
substring_index(substring_index(substr(info,locate('"text"', info)), '"', 4 ), '"', -1) 情報として
Table B.id = substring_index(substring_index(substr(info,locate('"picid"', info)), '"', 4) , ' "', -1)
式は非常に長いので、ストアド プロシージャを使用して短縮できます
a:{s:6:"picid";s:2:"74"; s: 9:"text";s:1:"Storage content area";}
substr(info,locate('"picid"', info)) は、「picid」を取得するために使用されます。
「picid」の段落を参照してください。 ;s: 2:"74";s:9:"text";s:1:"ストレージ コンテンツ領域";}
内側の substring_index は、"
"picid";s が 4 回出現する前のコンテンツを取得するために使用されます。 :2: "74
74
" が最後に出現した後の内容を取得するために使用されます。