1

コンマで区切られたいくつかの値を含むデータ フィードのフィールドがあります。1 つのレコードの値は次のとおりです。

A06,C05,C06,C15,C18,C19,C21,C22,E05,E22,G11,J02,J07,L04,L07,M01,M05,N03,N07,N10,N11,N12,N18,N19,N20,N24,O02,O03,O04,O06,O09,O14,O15,O16,O20,O21,O31,Q01,Q04,Q08,R07,S08,T08,T12,T23,T32,U01,U03,U04,U06,U13,W09,W11,W16,W19,W30,W45,X02,X03,X12,Z07

各コードの意味を説明した別の表があります。メイン テーブルをクエリしてこのフィールド名を値として取得すると、explode を使用して配列に取得し、foreach ループを使用して各値を出力できます。

問題は、別のテーブルに保存されている説明を表示したいということです。これらの値をリストに表示するためにこれを反復処理する適切な方法は何ですか?

例として、C21 は「ゲーテッド コミュニティ」を意味します。

4

3 に答える 3

2

そのためにFIND_IN_SET()関数を使用できます。

このような記録がある例

Orders Table
------------------------------------
OrderID     |     attachedCompanyIDs
------------------------------------
   1                     1,2,3               -- comma separated values
   2                     2,4     

Company Table
--------------------------------------
CompanyID      |        name
--------------------------------------
    1                 Company 1
    2                 Another Company
    3                 StackOverflow
    4                 Nothing

機能の使用

SELECT name 
FROM orders, company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)

結果になります

name
---------------
Company 1
Another Company
StackOverflow
于 2012-08-28T02:24:57.553 に答える
2

codeigniter にタグを付けたので、組み込みActive Record'sメソッド$this->db->where_in();を使用して説明を取得できます。たとえば、以下のコードを考えてみましょう

$codes = array('A06', 'C05', 'C06');
$this->db->where_in('description', $codes);
// 生成: WHERE コード IN ('A06', 'C05', 'C06')

の詳細については、アクティブ レコード クラスActive RecordsCodeigniter参照してください。

作品の詳細については、チュートリアルmysql WHERE INを参照してください

于 2012-08-28T02:33:02.750 に答える
0

参考までに、SQL 言語でこれを行う最善の方法は、リレーションシップを使用することです。

これを理解するために、この簡単な論文http://net.tutsplus.com/tutorials/databases/sql-for-beginners-part-3-database-relationships/ と多分これhttp://www.informit.comを読むことをお勧めします/articles/article.aspx?p=30875&seqNum=5でデータを選択するか、Web で自分自身を検索して、例を試してみることをお勧めします。SQL 関係は適切であり、セキュリティやその他の多くの理由で必要です。

于 2012-08-28T04:18:39.767 に答える