1

こんにちは、mysql クエリで簡単な問題が発生しました。

選択を行おうとしていますが、それが実行できるかどうか、または正しく実行されているかどうかわかりません。

HTMLチェックボックスから挿入されたコンマ区切りの配列値の値を含むListeningMethodというフィールドを持つテーブルがあります。可能なエントリは 5 つあり、フィールドにはチェックボックスの値をすべて含めることも、まったく含めないこともできます。

サンプル データは次のようになります。

NOLISTEN,RADIO,INTERNET,SATELLITE,MOBILE

私がやりたいのは、データを並べ替えることですが、カウントで行います。したがって、「RADIO」が 10 回、「MOBILE」が 5 回、「SATELLITE」が 3 回、10 レコード以上の間隔で出現した場合、100 レコードを検索すると、これらの結果を「順序」で表示およびソートできるはずです。 by」の一番上にある最も一般的なリスニング方法に設定されています。

やってみましたが、あまりうまくいきませんでした。

何かご意見は?ありがとう。

SELECT 
ListeningMethod, 
ListeningMethod REGEXP ("NOLISTEN") as ViewNOLISTEN,
ListeningMethod REGEXP ("RADIO") as ViewRADIO,
ListeningMethod REGEXP ("INTERNET") as ViewINTERNET,
ListeningMethod REGEXP ("SATELLITE") as ViewSATELLITE,
ListeningMethod REGEXP ("MOBILE") as ViewMOBILE
FROM VAT

「COUNT(ViewRadio) CountRadio」など、さらに追加してみましたが、列が存在しないと表示され、少し迷っています。

挿入ステートメントの例:

INSERT INTO `VAT` (`ListeningMethod`) VALUES ('NOLISTEN,RADIO,INTERNET,MOBILE');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('INTERNET');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO'); 
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('NOLISTEN');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('INTERNET');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('INTERNET');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('MOBILE');
> 
4

1 に答える 1

1

コメントでBarmarによって提案されているように、分離されたテーブルを使用できます。そうでない場合は、以下に示すようにユニオンを使用してそのような一時テーブルを作成できます:(ユニオンサブクエリに問題がない場合):

SELECT * FROM
(
    SELECT "NOLISTEN" AS "ListeningMethod", COUNT(ListeningMethod) as "AMOUNT" FROM VAT WHERE ListeningMethod LIKE "%NOLISTEN%"
    UNION
    SELECT "Radio" AS "ListeningMethod", COUNT(ListeningMethod) as "AMOUNT" FROM VAT WHERE ListeningMethod LIKE "%RADIO%"
    UNION
    SELECT "INTERNET" AS "ListeningMethod", COUNT(ListeningMethod) as "AMOUNT" FROM VAT WHERE ListeningMethod LIKE "%INTERNET%"
    UNION
    SELECT "SATELLITE" AS "ListeningMethod", COUNT(ListeningMethod) as "AMOUNT" FROM VAT WHERE ListeningMethod LIKE "%SATELLITE%"
    UNION
    SELECT "MOBILE" AS "ListeningMethod", COUNT(ListeningMethod) as "AMOUNT" FROM VAT WHERE ListeningMethod LIKE "%MOBILE%"
) AS VAT2 ORDER BY AMOUNT DESC;
于 2012-11-15T09:44:15.487 に答える