データベースの行と列を入れ替えるにはどうすればよいですか?

WBOY
リリース: 2016-06-13 12:15:59
オリジナル
1123 人が閲覧しました

データベースの行と列を入れ替えるにはどうすればよいですか? ?
php と mysql を考えてください。データベースは図に示すとおりです。

テーブルを作成する SQL ステートメントは次のとおりです。

<br />CREATE TABLE `score_collect` (<br />   `std_id` int(10) NOT NULL,<br />   `course_id` int(11) NOT NULL,<br />   `score` varchar(255) DEFAULT NULL,<br />   PRIMARY KEY (`std_id`,`course_id`),<br /> )<br />
ログイン後にコピー

<br />INSERT INTO `score_collect` VALUES ('2012508082', '2', '20');<br /> INSERT INTO `score_collect` VALUES ('2012508082', '3', '10');<br /> INSERT INTO `score_collect` VALUES ('2012508082', '4', '30');<br /> INSERT INTO `score_collect` VALUES ('2012508084', '2', '21');<br /> INSERT INTO `score_collect` VALUES ('2012508084', '3', '11');<br /> INSERT INTO `score_collect` VALUES ('2012508084', '4', '31');<br />
ログイン後にコピー


必要なもの実現するには、上図のデータを変換して、次のようにフロントに表示されるように調整します。

このうち、テーブルの行数は固定ではありません。 std_id と course_id も固定ではありません。
(質問を明確に表現したかどうかはわかりません)。 phpを使用することもできますが、SQL文を使用する方が良いと思います。確かに。 。パフォーマンスとパフォーマンスの両方を備えているのが最適です。
すべての神々に解決を祈ります、ありがとう。
また、皆様に旧正月が明けまして、ご多幸をお祈り申し上げます。ありがとうございます
------解決策のアイデア----------------------
<br />SELECT std_id,GROUP_CONCAT(course_id) AS course_id,GROUP_CONCAT(score) AS score FROM `score_collect` GROUP BY std_id;<br />
ログイン後にコピー

<br />//$list=array(array('std_id'=>'2012508082','course_id'=>'2,3,4','score'=>'20,10,30'),array('std_id'=>'2012508084','course_id'=>'2,3,4','score'=>'21,11,31'),);<br /><br />foreach($list as $key=>$val)<br />{<br />	$course_id_arr=explode(',',$val['course_id']);<br />	$score_arr=explode(',',$val['score']);<br />	unset($list[$key]['course_id']);<br />	unset($list[$key]['score']);<br />	foreach($course_id_arr as $key1=>$val1)<br />	{<br />		$list[$key][$val1]=$score_arr[$key1];<br />	}<br />}<br /><br />print_r($list);<br />
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート