0

クラスの日付と時刻を持つようにMySQLデータベースをセットアップしました。

 class  |      class1      |      class2      |       class3       |
--------------------------------------------------------------------
physics | Tue@1@Mr. Foobar | Thu@4@Ms. Barfoo | Fri@1@Mr. Bobsmith |
math    | Mon@4@Ms. Foobar | Tue@3@Ms. Barfoo | Fri@2@Mr. Lala     |
cs      | Tue@2@Mr. Foobar | Fri@4@Ms. Barfoo |                    |

基本的に、これはデータベース内の配列形式の値であり、必要に応じて爆発することを計画していましたが、よりきめ細かい検索を行う必要があることに気づきませんでした。

配列形式はDay@Period@Teacher

たとえば、今日が火曜日だった場合、火曜日のすべてのクラスを次のように順番に並べるにはどうすればよいでしょうか。

Today's Classes
1. Physics
2. CS
3. Math

それとも諦めて 、 、 に分けるclass1べきclass1dayですclass1periodclass1teacher

私の最良のアイデアは、次のようなものです。

$date = $date("l");
mysql_query("
SELECT * 
FROM classes 
WHERE class1 OR class2 OR class3
LIKE '$date%' ORDER BY //(I have no clue what to order by)
");

乾杯、どんな助けでも大歓迎です!

4

1 に答える 1

1

これは、次のクエリを使用して実行できます。

SELECT class 
FROM   table tbl1 
WHERE  Substring(class1, 1, 3) = 'Tue' 
        OR Substring(class2, 1, 3) = 'Tue' 
        OR Substring(class3, 1, 3) = 'Tue' 

ただし、データベースを正規化する必要があります。これにより、検索が容易になり、データの冗長性が軽減されます。

于 2012-08-12T21:31:34.147 に答える