0

いくつかのphp/mysqlデータベースクエリをサイトに追加しますが、これを構造化する方法がわかりません。

テーブルは次のようになります。

memberid    1111    1112    1119    1349    1350...
1           1       1       0       0       0
2           0       1       1       0       0
3           1       1       0       0       1
...

列名(1111など)はビデオIDであり、0と1は、そのメンバーがそのビデオをキューに持っているかどうかを表します。

私のクエリでは、1人のメンバーを調べて、どのビデオがキューに入っているかを確認する必要があります。

私は自分のコードを次のようにするつもりです。

$data = mysql_query("SELECT column names FROM queue WHERE memberid = $memberid AND its value = 1", $connection);
if (!$data) {
    die("Database query failed: " . mysql_error());
}

while ($result = mysql_fetch_array($data)) {
    $list[] = $result['columnnames'];
}

ヘルプ!ありがとう。-ダニエル

4

3 に答える 3

4

なぜあなたはすべてのビデオのためのコラムを持っているのですか?

メンバー:

CREATE TABLE member (
    member_id INT PRIMARY_KEY,
    name VARCHAR(100)
);

ビデオ:

CREATE TABLE video (
   video_id INT PRIMARY_KEY,
   title VARCHAR(150)
);

MemberQueue:

CREATE TABLE memberqueue (
    member_id INT,
    video_id INT
);

メンバーのビデオをキューに入れます。

SELECT video.video_id, video.title
FROM member
JOIN memberqueue
    ON member.member_id = memberqueue.member_id
JOIN video
    ON memberqueue.video_id = video.video_id
WHERE member.member_id = $member_id
于 2012-10-11T00:26:45.533 に答える
0

このようなものが機能するはずです、

SELECT if (`1111`=1 then `1111` else NULL) as `1111`, if (`2222`=1 then `2222` else NULL) as `2222` ... 
FROM queue
WHERE memberid = $memberid

私はこれをテストしていないので、少し遊ぶ必要があるかもしれません。また、このようなものに対処するためのより良い方法がたくさんあります。新しいビデオを追加するときはどうしますか?新しいデータベース列を追加しますか?

1つの列を作成し、ビデオを少し保存することを考えましたか。次に、ビットからビデオへのマッピングを維持します。

eg.
member_id       videos
1               1010
2               0110

videos table
video_id        bit
1               1000
2               0100
3               0010
4               0001

これで、メンバーIDを使用してビデオの値を選択できます。ビット単位の操作を使用して、キューにあるビデオを特定します。

于 2012-10-11T00:24:40.943 に答える
0

さらに、本当に列名を取得したい場合は、次の方法で取得できます。

SELECT column_name 
FROM information_schema.columns 
WHERE table_schema = 'YOUR_DATABASE_NAME' 
AND table_name = 'YOUR_TABLE_NAME';

もちろん、それはあなたのMySQLユーザーがSELECTの特権を必要とすることを意味しますinformation_schema

于 2012-10-11T00:35:03.210 に答える