-1

次のフィールドを持つテーブルがあります

+----+------+----------+----------+----------+
| id | name | sports_1 | sports_2 | sports_3 |
+----+------+----------+----------+----------+
|  3 | jack |        1 |        0 |        1 |
+----+------+----------+----------+----------+

1 を含む列名のみを表示したい。次の結果を得るには。

Jack does sport_1 sports_3
4

2 に答える 2

7

実際に必要なのは、別のテーブル構造です。少し詳しく説明します。

あなたが説明していることは、多対多の関係です。列にあるスポーツは、実際には「sports」という別のテーブルに含まれている必要があり、「users」テーブルと「sports」テーブルの間に、2 つを接続する「users_to_sports」という新しいテーブルがあります。

詳細な説明については、http://sqlrelationship.com/many-to-many-relationship/を確認してください。

于 2012-12-19T10:13:05.637 に答える
1

これは単なる回避策であり、chrisR が言ったようにテーブルの構造を変更することができます

しかし、ここで必要に応じて、これが役立つ場合はこれを見ることができます。

    $con = mysql_connect("localhost","root","admin");
     if (!$con)
             {
              die('Could not connect ya rafik : ' . mysql_error());
              }
   mysql_select_db("mydatabase", $con);
   $query = mysql_query("SELECT * FROM mytable2 ORDER BY name ");

   // please use PDO or mysqli instead.

そして、このようにphpで結果を管理します

   while ($column_data = mysql_fetch_assoc ($query)) {
          echo $column_data['name']." does : ";
        if ($column_data['sports_1'] == 1 ){echo "  Sport1  ";} else {}
        if ($column_data['sports_2'] == 1 ){echo "  Sport2  ";} else {}
        if ($column_data['sports_3'] == 1 ){echo "  Sport3  " ;} else {}
           echo "<br />" ;

      }

データベースはそのようなものです

id  name    sports_1    sports_2    sports_3
1   Mark      1               0         1
2   John      0               1         1

結果は次のようになります。

    John does : Sport2  Sport3
    Mark does : Sport1  Sport3 
于 2012-12-19T13:58:01.443 に答える