環境は
PHP5.3.3
MySQL5.0.95 です。
現在TBL1にURL(address)と、そのURLのタイトルタグの中身(title)と、独自に数えてる数字(count)を入れています。
その1つのアドレスに対してcountの数は色々あるので、
そのcountをアドレスと対にして合計したもの(SUM)で並び替えています。
(分かりづらかったらすいません。addressは主キーではないということです。)
タイトルに関しては最近取得し始めたところで入ってるところと入っていないところがあります。
その状況下で
SELECT address, title, sum(count) as SUM FROM TBL1 where address LIKE "%hoge.com%" group by address order by sum DESC LIMIT 10;
こういうSQL文を使ってSELECTした際に、
hoge.com以下の例えばhoge.com/1.html, hoge.com/2.html, ...
といった感じのURLごとにSUMの数で並び変わるのですが
この場合titleはどのカラムを参照していることになるのですか?
(address) (title) (SUM)
hoge.com/1.html | test1 | 500 |
hoge.com/2.html | test2 | 400 |
hoge.com/3.html | | 300 |
hoge.com/4.html | test4 | 200 |
hoge.com/5.html | test5 | 100 |
hoge.com/6.html | | 40 |
hoge.com/7.html | test7 | 20 |
hoge.com/8.html | | 10 |
hoge.com/9.html | | 6 |
hoge.com/10.html | | 5 |
こんな結果だったとして、titleが入っているものと入っていないものの区別がつきません。
入っていないURL(例えばhoge.com/3.html)のaddressカラムも全て空というわけではありません。
逆に入っているものに関しては、全ての行にtitleが入っているわけではありません。
主キーは今回のSELECTとは関係してない"ID"です。
ID | address | count | title
1 | hoge.com/1.html | 3 | test1
2 | hoge.com/1.html | 10 |
3 | hoge.com/1.html | 43 | test1
ID | address | count | title
1 | hoge.com/3.html | 4 | test3
2 | hoge.com/3.html | 3 |
3 | hoge.com/3.html | 42 |
それぞれは主キーに応じてcountが個別にある状態です。
上記は正確ではありませんが、こんな感じです。
こうして共に入ったり入ってなかったりするのにSELECTした結果に
入ってるものと入ってないものが出てくるのが分かりません。
ちなみに、検証すると一番countが多い行にtitleが入っていたらSELECT文にも出てくるというわけではないようです。
なぜtitleが出るものと出ないものがあるのでしょう?
ご教授宜しく御願い致します。
No.2ベストアンサー
- 回答日時:
MySQL の仕様では、GROUP BY した際に一意にならないカラムをSELECT句に指定した場合は、そのグループに属する値のどれかを返します。
その中のどれを返すかについては特に基準は有りませんので、不確定です。詳しくは下記のページを参照して下さい。
http://dev.mysql.com/doc/refman/5.1/ja/group-by- …
なお、 null 以外は同じ値になるのでしたら、MAX 関数などを使えばその値が取得できるかと。
例) SELECT address, MAX(title), SUM(count) as SUM FROM ・・・
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/group-by- …
No.1
- 回答日時:
(素人目からすると)「挙動は未定義」な気がします。
とりあえずtitleが潰れてしまうのを回避するために
group by address, title
とすることは出来るとは思いますが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB初心者。小数点以下の表示で...
-
<html>perlスクリプト</html>
-
IEで「file://」プロトコルが使...
-
拡張子'html'と'htm'はどっちが...
-
外のhtmlに飛ばせる。
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
チェックボックスの返す値
-
「value」に2つの値をセットす...
-
INPUT TYPE
-
WEBページを強制的に横画面で見...
-
[HTML]プルダウンメニューの横...
-
FORMのselectの選択肢を最初か...
-
チェックボックスとセレクトボ...
-
横スクロールを縦スクロールに...
-
CGI経由でのPDFファイルをダウ...
-
掲示板の文字色指定について
-
JNAVIから提供されたメー...
-
メールフォームのプルダウンメ...
-
(CGI)お気に入り登録やアドレス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB初心者。小数点以下の表示で...
-
ブックマークからのアクセスを...
-
vsftpd+sslでアップロードできない
-
IEで「file://」プロトコルが使...
-
HTMLでテキスト読み込み
-
Lightboxの表示位置に関して質...
-
ローカルテストサーバーと本番...
-
大分湯布院の観光地とおみやげ
-
FORMを中央に表示したい
-
大和ネクスト銀行の銀行コード
-
JEditorPaneでwebページを表示
-
拡張子'html'と'htm'はどっちが...
-
proftpdで困ってます。
-
index.html(トップページ)か...
-
<html>perlスクリプト</html>
-
外のhtmlに飛ばせる。
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
INPUT TYPE
おすすめ情報