2017-05-02 17 views
3

私はループのために使用したデータベースを呼び出す際に問題があります。データベースにループの使用場所を問い合わせます

データベースクエリ1

SELECT id,qtyslot FROM rack WHERE theid = '1' 

例:id = 2我々はここで、ループ

for ($x = 1; $x <= 12; $x++) { 

のために作成 とqtyslot = 12

私は、スロットの識別情報と、データベースが 1または2を変化させる呼び出します、4(2〜4スロットのカンマ)など

以下のよう

SELECT * FROM books WHERE idrack = '2' AND slot"......." // $x 

データベース構造を選択する方法

。テーブル

 
----------------------------------------- 
| loop qtyslot | In slot  | remark | 
----------------------------------------- 
| 1   | name slot 1 | remark | 
----------------------------------------- 
| 2   |    |  | 
---------------|    |  | 
| 3   | Name slot 2,4 | remark | 
---------------|    |  | 
| 4   |    |  | 
----------------------------------------- 
| 5   | Name in  |  | 
---------------| slot 5,6 | remark| 
| 6   |    |  | 
------------------------------------------ 
etc up to 12 

 
----------------------- 
| id | slot | name | 
----------------------- 
| 1 | 1  | name | 
----------------------- 
| 2 | 2,4 | name | --> How to define this with the above loop ($x) 
----------------------- 
| 3 | 5,6 | name | --> How to define this with the above loop ($x) 
----------------------- 
| 4 | 7  | name | 
----------------------- 

そして、このような結果は、誰も私を助けることができます。

+0

最初。カンマがあればこれが行われます。それ以外の場合は通常の反復処理を続行します。または、mysqlの 'IN'演算子を使用して' implode'することができます – Akintunde007

+0

Thanks @Akin。しかし、スロット列の場合は、デフォルト値ではなく、〜toの値になります。 2.4がLOOP 2、LOOP 3、およびLOOP 4に配置されている例です。しかし、スロットの一部は1だけです。 – Haidarpesebe

答えて

1

mysqlでSUBSTRING_INDEX関数を使用できます。 これを試してみてください。私たちは、文字列にカンマがある場合は、 `explode`を検出するために、` strpos`を使用するすべての

SELECT * FROM books WHERE idrack = '2' AND $x BETWEEN SUBSTRING_INDEX(slot, ',', 1) and SUBSTRING_INDEX(slot, ',', -1) 
+0

スロットの列は、デフォルト値ではなく、〜からの値です。例えば2.4の場合はスロット2,3,4です。結果は上の表のようになります。たとえば、スロット2.4がループ2,3の4から結合されている場合などです。 ありがとうございました – Haidarpesebe

+0

@Haidarpesebe更新を参照してください –

+0

私は試した結果は適切です。どうもありがとうございました。一度は非常に石化しています。再度、感謝します。しかし、テーブルを使用している場合は、スロットに名前をつける方法を手伝ってください。​​この結果のrowspan = 3は2.4(3スロット)です。助けてください。上記の表のように。 – Haidarpesebe

関連する問題