トップページ⇒php
988コメント357KB

mysql ヘルプ!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/22 16:08ID:kMbsTQE3
リモートから家(常時接続)のmysqlサーバにつなげません
状況を詳しく書きます
PHPが動くプロバイダーのディレクトリにおいた自分の家の
mysqlサーバを操作するPHPに
$db = mysql_connect("mysqlサーバのip:3306","ゆーざ","ぱす");
と書いたのですが、駄目でした。
どうすればいいのでしょうか?
0413nobodyさん04/05/28 09:51ID:???
>>412
tmp.sqlの1行目に間違いがある
0414nobodyさん04/05/28 13:15ID:???
test < tmp.sql が1行目
0415nobodyさん04/05/28 13:18ID:6cZBVmMM
>>412
外部ファイルの実行は
mysql>\. filename
じゃねーの。
041641204/05/28 20:47ID:???
どうもです。
\. filename 又は source filename
でできました。
0417nobodyさん04/05/31 21:52ID:???
質問です。

次のようなテーブルがあります。

・table_program
-----
ID
番組名
番組名かな
-----
・table_song
-----
ID
table_programID
曲名
曲名かな
-----

「曲名」で検索して、検索結果には「曲名」と「番組名」を表示したいのですが、
どのようなSQL文になるのでしょうか?
無理ではないと思いたい のですが。

よろしくお願いします。
0418nobodyさん04/05/31 22:45ID:???
たぶん入門書を読んだほうがいいんでない?
0419nobodyさん04/06/01 08:31ID:???
>>417
SELECT s.曲名,p.番組名 FROM table_song AS s LEFT JOIN table_program AS p ON s.table_programID=p.ID WHERE s.曲名='ちんこ音頭';
0420nobodyさん04/06/01 18:37ID:???
>>419
ありがとうございました。

>>418
買ってみたのですが、どうも分かりづらくて・・・
で、mysql.comのマニュアルを見てたのですが、あまりにも多すぎて・・・
>>419から逆引きで調べてみます。

/* 週末には本屋に行って来ます。 */
0421nobodyさん04/06/01 20:00ID:???
Windows2000 に Mysql4.0.20aをインストールしました。
WinMysqlAdmin.exe を実行すると、

ダイナミック リンク ライブラリ LIBMYSQL.dll が指定されたパスC:\mysql\bin;;C:\WINNT\system32;C:\WINNT\system;C:\WINNT;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem に見つかりませんでした。

というエラーメッセージが出ます。
\bin フォルダにはもちろん LIBMYSQL.dll は見当たらないし、\WINNT フォルダの中にも My.ini がありません。
LIBMYSQL.dll は全部で2つ見つかりました。

WinMysqlAdmin.exe を実行するには、および、不足しているファイルを補うにはどうしたらよいでしょうか?
0422nobodyさん04/06/01 20:28ID:???
>>421
C:\mysql\binにlibmysql.dllがないのが、なんとなくおかしい。
# MySQL4.0.18のレイアウトから4.0.20aで変わってるのかも知れんが。

MySQLのサービスを停止してから、MySQLをアンインストールして
再度インストールしてみれ。
0423nobodyさん04/06/01 20:49ID:???
>>421
試しにダウンロードしてみた。
確かにdllが無い。
元の4.0.17に戻しました。
042442104/06/01 20:54ID:???
>>422

>C:\mysql\binにlibmysql.dllがないのが、なんとなくおかしい。

そうですよね。

起動そのものができてないです。
アンインストールして再インストールしてみました。
やはり同じだ…。
ダウンロードしなおしてやってみてもダメでした。
042554904/06/01 21:44ID:???
>>423

なんと無かったですか!
こういうことってよくあるんでしょうか。

4.0.17 とか 4.0.18 あたりを入れたいんですが、
ダウンロードできるページが探しても見つからない。
本のCD-ROMとか使うしかないだろうか。
0426nobodyさん04/06/01 22:30ID:HgyXjo5H
>>425
どうぞ
http://downloads.mysql.com/archives.php?p=mysql-4.0&o=-win
042742104/06/02 00:00ID:???
>>426
おおお!
ありがとうございます。

(421=425=549←間違えた)
042842104/06/02 00:33ID:???
ちゃんとインストールできました。^^
0429nobodyさん04/06/02 15:16ID:???
mysqlの勉強がしたいです。

今は、win98に入れてます。それでサーバを起動させてmysqlとプロンプトに入力すると、
接続ができ中のものがなんでも見れちゃいます。

勉強したいのはそうゆう基本部分で、例えば普通レンタルサバではshellとかでサバにインスコしてある
mysqlにつなげられますよね。でも、mysqlと打っても当たり前だけど、接続ができない。自分がもらってる
ユーザ名とかでなきゃ。

大元のルート権限・パスワードとかを変えるにはどうすれば。とかが知りたいです。簡単に言うと
自分のwin98に入れてあるmysqlにプロンプトからmysqlとユーザ名・パスワードをなしでやっても
接続できないようにしたいんです。

接続後のことはmysqlマニュアルとかにも書いてあるので、いいのですが、基本の基本がどこに書いてあるか
わからないので、どこのサイトに行けとか、mysqlマニュアルのこのページを読めとか教えて下さい。

低レベルなし津文ですみませんがどなたかお願いします。
0430nobodyさん04/06/02 15:28ID:???
>>429
>今は、win98に入れてます。それでサーバを起動させてmysqlとプロンプトに入力すると、
>接続ができ中のものがなんでも見れちゃいます。

確かあれだろ。mysqlって打って接続できるのはwin(普通UNIX)のroot権限を持ってるやつだけだろ。
だからサバは普通mysqldをroot権限で行わないで、別のユーザを作って行わせる。
なんか違うな・・・
mysqldで起動させたユーザだけがmysql(ユーザ名なし)で接続できるんじゃなかったっけ?
だからtelnetとかで、外部から接続してもそのユーザはmysqlを起動させたユーザじゃないから
与えられたユーザ名でしか接続できないと思う。

だから自分のパソに入れてあるなら、ユーザを二つ作ってaっていうユーザに起動させた後、bっていうユーザに
でログインするとmysql(ユーザ名なし)では接続できないんだったと思う。

間違ってるかもしれんから、先に謝る。ごめん。誰か補完してくれ。
0431nobodyさん04/06/02 15:40ID:???
とりあえずWinのmysqlのrootにパスを設定する。
これでrootしかアクセスできなくなる。
次にrootでユーザデータベースを作る。
GRANT 権限 ON ホスト名 データベース名 ユーザ名 IDENTIFIED パスワード みたいな感じ
俺も良く分からんからmysql grantとかで検索してくれ。
0432nobodyさん04/06/02 15:51ID:???
rootになってまず全てのユーザ(名無しさん)を削除せんとだめだな。
043342904/06/02 16:06ID:???
>>430>>431>>432
こんなに一杯ありがとうございます!かなり嬉しいです。

>>430
今試してみました。aユーザに起動させてaユーザを一度ログアウトしてbユーザで戻ってこようと思ったら、
ログアウトした時にmysqlもダウンしてしまいました・・・

>>431
データベースをひとつ作ってそれを扱えるユーザ・パスワードを設定するGRANT構文はできるのですが、
>とりあえずWinのmysqlのrootにパスを設定する。
がわかりません。それは名無しで接続して、名無しにパスワードを設定するってことですか?
それとも
mysql -u root;
で接続してrootという名前のユーザのパスワードを設定するってことですか?

>>432
ユーザの削除?それをやらないと名無しでいつまでたっても接続ができてしまうということですね。
mysql ユーザの削除
でぐぐってみます。
0434nobodyさん04/06/02 16:21ID:???
>>429
基本部分の質問なら、ここで聞くよりも
こういうサイトとか読んで勉強した方が早い

ttp://www.rfs.jp/server/mysql/02/01.html
043542904/06/02 16:37ID:???
>>434
ありがとうございます。今、mysqlっていうデータベースでユーザ情報を管理してるらしいので、
rootで入って、use mysql して
delete from user where host='localhost' and user='';
ってやってみたらQuery OK, 1 row affected (0.16 sec)と出たので、
やった!と思って一度quitして試しに名無しで接続できるかやってみました・・・

何故か名無しで接続できてしまいました。なんかが違うみたいです。
043642904/06/02 17:13ID:???
use mysql;
delete from user where host='localhost' and user='';
ってデータベースmysql内のテーブルuserの中からフィールド名hostの値がlocalhostで
且つ、フィールド名userの値がnull?のレコードを削除するっていう命令ですよね。

今mysqladmin内のDatabaseってタブを見てみたら今まではmysqlとか元々あるデータベースの
情報があったんですが、全て消えてました・・・

もしかして、databaseを全て削除してしまったのかもしれません。インスコしなおししなきゃいけないですよね。
043742904/06/02 18:39ID:???
一度インスコしなおして、またななしユーザの削除に挑みました。今度は
use mysql;
select user from user;
で名無しがあること確認してから
delete from user where user='';
として、レコード2つ消したよっていう返事をもらいました。
select user from user;
で見たら確かに消えていてrootが二つ並んでるだけになりました。
その後一度mysqlをシャットダウンして再起動してみると、今度は信号が赤から青にかわらくなって
しまいました。

名無しユーザを消すと何故か次の起動でおかしくなるんですが、名無しユーザは消すべきでないのでしょうか?
でも普通のレンタルサーバとかなら名無しユーザなんて消していますよね。
とりあえずまた再インスコして今度は名無しユーザにパスワードでもつけてみようかと思います。
0438nobodyさん04/06/02 19:01ID:???
>>437
WebProg板の内容と離れてきたから
↓こっちでどうぞ
データベース

http://pc5.2ch.net/db/
043942904/06/02 19:24ID:???
>>438
ありがとうございます。いってみます。
0440nobodyさん04/06/02 20:43ID:???
>>425
>こういうことってよくあるんでしょうか。
パッケージングミスは良くあることではないが、
自分では良くやるな...バージョン管理してんのに
別の混ぜちゃったり。

libmySQL.dllはnoinstall版には入ってたよ。

トップのダウンロードページのWinの項はバージョンは4.0.18
だったりするので、Win版の4.0.20aはまだ微妙なのかもしんない。
一応レポ、出しとくけどね。
0441nobodyさん04/06/02 20:52ID:???
なんつうか、
・クライアントコマンドmysqlの(OSの)実行ユーザ
・DBMSであるmysqldの(OSの)実行ユーザ
・MySQLデータベースのユーザ
は、ちゃんと区別して考えてくれ。

Webプログラムで利用するなら、区別の無いOS(Windows)
じゃなくて、普通に区別する環境で使うことが多いだろ。
044242104/06/03 09:27ID:???
>>440
うーん、やっぱり人間のやってることなんだなぁ。
結局4.0.18をインストールしたんですが、dllの他にも結構足りないファイルがあるみたい。
4.0.20aと「a」がついてるのは、マイナーバージョンアップの更にマイナーなバージョンアップなんだろうか。
一応知らせたほうがいいのかなと思ったけど、レポートの出し方わかりませんでした。^^;
044342104/06/03 09:29ID:???
>dllの他にも結構足りないファイルがあるみたい。

4.0.18と比べてみると4.0.20aで足りないってことです。
0444nobodyさん04/06/03 20:25ID:XU5SaHAn
PHPでDBを呼び出して表示させるようにしたんですが
エンコードが間違っているのか文字化けを起こしてしまいます。
ブラウザ側でエンコードを変えて見てもDBから引っ張ってきた部分は文字化けしたままになります
これはMySQL側で設定を変えれば回避できるのでしょうか?
またその方法等を教えていただけませんでしょうか。よろしくお願いします
ちなみに
PHP Version 4.3.6
MySQL 4.0.14b
を使ってます
0445nobodyさん04/06/03 20:45ID:???
>>442
足りないファイルはレイアウトの変更もしくはパッケージングのミス。
例えばlibmysql.dllはlib/optに入っているが、パッケージされている
プログラムの中で/binにあることが前提でコンパイルされているものが
あるのでパッケージングミスと考えられる。

この辺はビルドの設定/ノンインストーラ/インストーラ版を比べてみて
調べるのが確実だが、ノンインストーラとインストーラ版では敢えて外したり、
入れたりしてるファイルもあるので、ファイルの有無でみるのではなく、
そのパッケージでエラーなどが出て整合性が取れなくなっている箇所があれば
その部分はパッケージミスと思うという感じで良いよ。

レポは日本語のバグレポからの吸い上げがどの程度進んでるかわからないので、
今のところは本家のバグレポートでpackingのカテゴリで出すのが良い。
その前に本家のMLでもチェックしとくべきだけど、まあそこは端折っても可。
0446nobodyさん04/06/03 21:36ID:???
>>444
http://dev.mysql.com/doc/mysql/ja/Charset-server.html
MySQL4.0.14だとマニュアルに記述されているキャラクタセットに
関する機能がすべてある訳ではないことには注意。
# 示したサーバ設定の部分は4.0.14でも同様。
044744404/06/04 00:34ID:???
>>446
ありがとうございます。
最近始めたばかりで書いてあることはよく理解できませんが
いろいろ見て勉強したいと思います。
044842104/06/04 10:59ID:???
>>445
昨日バグレポートを見ていたら、4.0.20aに関する報告は2つあっていずれも同じエラーについてでした。
一つはロシア人の人(う〜んわーるどわいど)で、「足りないファイルは足してちょ」というような答えが返ってました。
もう一人の人は私と同じように「どうしたらいいんだ〜助けてくれ! ファイル梱包してないんとちゃうん!」と焦っていた。

ノンインストーラ版をビルドする腕もないのでどんなファイルが入っているか見てみたこともなかったですが、インストーラ版と中味は一緒だと思ってました。
まさかパッケージミスに遭遇するとは思わなかったですが、今後もエラーで見分けたいと思います。
0449nobodyさん04/06/07 14:22ID:AVijgqxq
質問っていうか相談っていうか。

order by してlimitした結果を、さらにorder by で並び替えたい場合は
どうすればいいでしょうか。
「日付が最新のものから5件分のデータを日付が古い方から順に並べて取得」
みたいな感じです。

以下は現在のコーディングです。

select count(*) from table; でレコード数を取得しておいて、

select * from table
order by date
limit レコード数-5, 5;

これをSQL一発でやりたいです。

select * from table
order by date desc
limit 0, 5
orcer by date;

こんなことがやれれば最高なのですが、もちろんこれはエラーでした。
SQL文の結果の並び順をひっくり返す方法があればそれでもいいです。
0450nobodyさん04/06/07 14:46ID:???
mysql にはダミー表(oracle でいうところの dual 表)みたいのはないのでしょうか?

select password( 'hoehoe' ) from dual ;

のようなことがやりたいのです。
045145004/06/07 15:07ID:???
すみません、解決しました。

select password( 'hoehoe' ) ;

でできました><
0452nobodyさん04/06/07 16:11ID:???
>>449
select @target := id from table order by date desc limit 0, 5;
select * from table where @target <= id order by date limit 5;
0453nobodyさん04/06/09 17:16ID:???
何度やってもタスクバーにMySQL紹介サイトで言われている
信号のアイコンが出ないんですがこれは何が原因なのでしょうか?
phpdevを使ってインスコしました。XPでSQLはVer4です。
C:\phpdev\mysql\bin\mysql.exeで起動させてます。
0454nobodyさん04/06/09 17:24ID:???
>>453
WinMySQLAdmin.exeを起動してみなはれ。
0455nobodyさん04/06/09 17:33ID:???
>>454
そのファイル名も紹介サイトに書いてあったんですが
どこを探しても見当たらないんです。ちなみにphpdevは動作確認後4.30にうp済みです。
インスコ場所もデフォルトのままです。
よければどのフォルダにあるか教えてもらえませんか?
0456nobodyさん04/06/09 17:49ID:???
自分で探せや
0457nobodyさん04/06/09 18:01ID:???
>>455
普通はmysqlのbinディレクトリだけど、phpdevは違うのかもね。
先ずは検索しる。なければパッケージされていないのでしょう。

まあ、タスクバーの信号アイコンなど無くても支障ないんで、
あきらめれば良いんじゃないか?

0458nobodyさん04/06/09 19:50ID:???
>>457
検索したんですが無かったので、パッケージされてないのだと思います。

>タスクバーの信号アイコンなど無くても支障ないんで
え!?あれが動いてる目安になってるものだと思ってました。
じゃあ安心ですね。これでようやく集中できます。ありがとん
045945704/06/09 22:53ID:???
>>458
Unix上のMySQLにはあの信号アイコンはないからねぇ。
生存確認したいなら、mysqladmin pingとかするがよろし。
0460nobodyさん04/06/10 16:47ID:???
会社で聞いた話だけど、Mysql+PHPで1GBのデータを5分ぐらいで検索できるって本当?
っていうか、そんなにかかるものなの?
0461nobodyさん04/06/10 17:33ID:???
どっちだよ
はっきりしろ
0462nobodyさん04/06/11 00:42ID:???
>>460
たった1GBで5分もかかるわけ無いだろ?
MySQLとは関係ないけどPHPのループは本当に遅いみたいね。
0463nobodyさん04/06/11 23:13ID:ReUB/uB4
教えて下さい。
MyAdminで、商品の金額が税抜きなのを
税込みの価格に一気に変更する方法を
知りたいです。お願いします。
0464nobodyさん04/06/12 00:59ID:???
486 32MB くらいのサーバなら5分くらいかかるかもよ。
0465nobodyさん04/06/12 10:38ID:9j+7vS6Z
>>463
UPDATE 金額テーブル SET price=price*1.05;
price が INTの時に小数以下がどうなるかはしらね。
0466ぺぷし04/06/17 13:39ID:t9pcSu9t
PHP初心者のため、ご教授いただけたら幸いです。

MySQLのデータベースのBLOBフィールドにバイナリデータとして格納してある複数の画像ファイル(JPEG)をPHPでブラウザに全て自動的に書き出すようにしたいのですが、
下記のようにDo Whileを使ってフィールドの全データを書き出そうとすると"Cannot modify header information- headers already sent by
output started ..."というエラーになり、画像ではなくバイナリデータのまま出力されてしまいます。

ちなみに、ループにいれず、クエリで抽出した単一の画像だけを出力する分にはこのようなエラーは出ず、画像を表示することができるので、
ループに入れることで、header情報のContent-typeの指定が繰り返されるのがいけないのだと思うのですが、試しにループの外に
header("Content-type: " . 'image/jpg'); の部分をおいてみるとファイルダウンロードダイアログボックスが開いてしまいます。

ループでの全データ書き出しはできないのでしょうか?
どなたかご存知の方、いらっしゃいましたらお助け下さい。

***********************************************************************
<table border="1">
<tr><td>ID</td><td>Image</td></tr>
<?php do { ?>
<tr><td><?php echo $row_rs1['id'] ; ?></td>
   <td> <?php header("Content-type: " . 'image/jpg');
    echo "<img src= {$row_rs1['image'] } >"; ?>
   </td>
</tr>
<?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
</table>
0467nobodyさん04/06/17 14:36ID:???
>>466
mysqlとは関係ない話ですが。

ブラウザ                  サーバ
---------              -------------
このファイルをよこせ---->
        <----ほらやるぞ中身はtext/htmlだよ
htmlの中にimgタグがあるので
画像ファイルをよこせ ---->
        <----ほらやるぞ中身はimage/jpegだ

htmlとjpegを一回の通信で同時には送れませんので。
0468nobodyさん04/06/17 20:02ID:???
>>467
さらにmysqlとは関係ない話ですが。

mhtml(mht)というものがあります。
0469nobodyさん04/06/17 23:01ID:???
げー
0470nobodyさん04/06/18 00:38ID:???
hogera.html
------
<html><body><img src="pakera.php"></body></html>

pakera.php
------
<?php
//なんとかしてMySQLに接続してデータを取得
Header("Content-Type: image/jpg");
echo mysql_result($result,0,0);
?>

で、いかんかね?
0471ぺぷし04/06/18 11:18ID:kLx9QR2S
467、468さん
解説どうもありがとうございました。なるほどです。PHPをいきなりかぶりつきでやり始めたので、
基本が今ひとつわかっていない自分です。。。もう少し勉強します。

470さん
アドバイスどうもありがとうございました。ヒントを元に少しいじってみようと思います。

ところで今回のこのスクリプトは、サイズは小さいけれどかなりの数の画像を表示する
ウェブページで、例えば画像を追加するたびに、HTMLを書き換えなくても良いように、
画像をDBにアップロードしさえすれば、自動的に全画像がDBから書き出されるように
したいなーと思ってトライしているものです。

ただ、あまりに多くの画像をバイナリとしてDBに格納するのは、表示の際の速度とか
実際、どうなのでしょうか。

別の方法として、画像ファイル自体は別のディレクトリにアップロードするようにして、
そのファイル名とパスだけをDBに格納して、HTMLに出力するようにすることも
可能かと思うのですけど、どちらの方法の方が適しているでしょうか・・・?
0472nobodyさん04/06/18 12:11ID:???
>>471
後者

あと画像を処理するPHP書くなら
getimagesize()とか調べとくといいかも
0473nobodyさん04/06/18 16:19ID:???
>>471
画像はファイルとして置いといたほうが扱いやすいと思う。
0474nobodyさん04/06/18 20:39ID:???
>>471
それよりその画像格納専用ファイルにおいてあるファイルの一覧を取得して自動的に作成。
画像以外にタイトルとかそれ以外が欲しけりゃDBかXMLでも。
0475ぺぷし04/06/19 23:37ID:M2Vk26m1
472,473,474さん
レスどうもありがとうございました。
画像と一緒に文字列も書き出すようにしたいと考えているので、
後者の方法のほうがやはり無理がない気がしてきました。

ちなみにもう一つ質問させて下さい!
画像表示にかかる速度的にはどちらの方法のほうが速いと思われますか?

現時点ではDBを使わず、多量の画像をHTMLタグでハードコーディングして
全て書き出していますが、既に結構表示し終えるのに少し時間がかかって
いるのですが・・・
0476nobodyさん04/06/20 13:50ID:???
>多量の画像をHTMLタグでハードコーディングして全て書き出していますが

 めんどくさいですよね。自動にしとかないと。

>既に結構表示し終えるのに少し時間がかかっているのですが・・・

 速度だけで話すなら、サムネイル用画像でも用意した方がいい。
 
0477nobodyさん04/06/20 15:36ID:BKvShsgW
age
0478nobodyさん04/06/20 16:43ID:???
>>475
一回テストでDBに画像ぶち込んで一覧表示みたいなのを
作ったことあるけど展開する時にメモリ喰いまくりだし遅いし
パフォーマンスは凄く悪い
よっぽど専門的知識があってそれ用に
パフォーマンス最適化できる自信があるか、
どうしてもDBに格納しなきゃいけないって理由でもない限り
普通は画像はDBに入れない方がいいんじゃないかと
0479ぺぷし04/06/22 12:33ID:F+BhnZqz
476さん、478さん
レス、どうもありがとうございました。

478さん
やっぱり画像を直接DBに入れるのはイマイチっぽいですね。
パフォーマンスを最適化するような知恵はありそうもないので、
おとなしく画像を別ディレクトリに保存する方向で行こうと思います。

ありがとうございました!
0480nobodyさん04/06/23 20:24ID:???
MySQLでの日付計算を教えてくだされ。先月末日を知りたいのです。
PostgreSQL なら
SELECT to_char(EXTRACT('month', CURRENT_TIMESTAMP) - '1 day'::INTERVAL, 'YYYY-MM-DD');
でスコーンっと先月末日が出るんですけど、MySQLじゃどうするんですかいのぉ

バージョンが3台なもんでLAST_DAY(date)が使えないんです。
SELECT DATE_FORMAT(DATE_SUB(LAST_DAY(CURRENT_DATE()), INTERVAL 1 MONTH), '%Y-%m-%d') とかアウチ

もちろん
SELECT DATE_FORMAT(DATE_SUB(EXTRACT(MONTH FROM CURRENT_DATE()), INTERVAL 1 DAY), '%Y-%m-%d') はエラー

です。よろしく。
0481nobodyさん04/06/23 21:18ID:???
>480
自己解決。お騒がせ。

SELECT DATE_SUB(CURRENT_DATE(), INTERVAL EXTRACT(DAY FROM CURRENT_DATE()) DAY)

すっきりせんが、どうにかなった。フロ入って嫁と一発やって寝るよ。
0482nobodyさん04/06/24 04:41ID:???
俺とも一発やってくれ。
0483nobodyさん04/06/27 16:33ID:dc5u0+Vm
t1とt2が全く同じ構成のテーブルであり、それを連結したいと考えているのですが
連結条件に「t1.id=t2.id」などを付けずに連結し、更に$whereを「t1.id=1」
ではなく「id=1」などで処理させる方法はないでしょうか?
SELECT * FROM t1,t2 WHERE $where
0484nobodyさん04/06/28 09:35ID:???
>>483
t1 CROSS JOIN t2
t1の全行にt2の全行を追加
0485nobodyさん04/06/28 11:34ID:???
>>484
SELECT * FROM t1 CROSS JOIN t2 WHERE t1.id =1;
では成立するのですが、
SELECT * FROM t1 CROSS JOIN t2 WHERE id =1;
ではエラーになってしまいます。

テーブルを2個以上JOINする場合にWHEREを
「t1.id =1 || t2.id =1 || t3.id =1」と記述して行くしかないのでしょうか?

マニュアルには「同様に、JOIN と CROSS JOIN に関しても、MySQL 4.0.11 以降
でのみ条件を指定できます。」と書いており、4.0.11以降でなければ「id=1」という条件
では出来ないという事でしょうか?
0486nobodyさん04/07/01 14:23ID:7y8AL+GJ
検索結果を表示させるのに、
総検索件数と、10件ずつ表示させたいのですが、

現在、2回クエリ使って結果を得ています、
1回には出来ないのでしょうか?

<現在>

select count(*) from hoge where flag=1;

select * from hoge where flag=1 limit $a,10;

このような感じでおこなっていたのですが、
レコードが1万件をこえてくると、結構時間がかかってしまいます。

なにか良い方法ありませんでしょうか?
048748604/07/01 16:08ID:???

このような感じでおこなっていたのですが、
レコードが1万件をこえてくると、結構時間がかかってしまいます。

なにか良い方法ありませんでしょうか?



ん?
なんか変な質問してますね・・・。
すみません。


perlでCGIスクリプトを作成してます。
DBIでMysqlに接続していますが、
このモジュールのあたりで、先の質問のようなことを
行うことは出来ませんでしょうか?



質問するって、結構難しいですね。
0488nobodyさん04/07/01 16:36ID:???
>>487
phpだとmysql_num_rows()とかあるんだけどね。
Perlってそんなのないのかしらん
0489nobodyさん04/07/01 17:30ID:???
perlもあるよ。

一発で取ろうとするとlimit使えんねっつー話じゃね?
049048604/07/01 17:42ID:7y8AL+GJ
>>489

そうです。
そんな感じです。

なにか、いい方法ないのでしょうかね。

DBIモジュールのマニュアルをじっくり読んでなかったので、
今読んでみたりしてます。

0491nobodyさん04/07/02 00:37ID:???
>>490
http://dev.mysql.com/doc/mysql/ja/Miscellaneous_functions.html
の FOUND_ROWS() を見れ。(以下触り)

> 状況によっては、LIMIT を指定しなかった場合にいくつの
> レコードが返されるかを、ステートメントを再度実行する
> ことなく確認したいことがある。このレコード数を確認する
> には SELECT ステートメントに SQL_CALC_FOUND_ROWS
> オプションを指定し、その後 FOUND_ROWS() を呼び出す。
> LIMIT なしで再度クエリを実行するより時間がかからない。

しかし、1万件程度で時間が掛かるってのも、DBのチューニング
や作りがおかしくね?
049248604/07/02 08:11ID:???
>>491

おお〜〜〜〜〜〜〜。

> > オプションを指定し、その後 FOUND_ROWS() を呼び出す。
> > LIMIT なしで再度クエリを実行するより時間がかからない。

確認しました。スバラシイです。
FOUND_ROWS()の呼び出しは瞬時にかえってくる。

自分のもってるオライリーのl本って、かなりバージョン古いな・・・。
新しいの買うか、ボロボロやし。

> しかし、1万件程度で時間が掛かるってのも、DBのチューニング
> や作りがおかしくね?
1万件でなく10万件でした。失礼。しかもさらに増えるし・・・。
likeとかで検索かけると、大変なことに。
チューニングもさらにシビアになりますね。

なにはともあれ、有難う御座いました〜。
491様に感謝!
0493nobodyさん04/07/02 16:48ID:???
>>491
知らなかったよ「FOUND_ROWS()」
しかし「MySQL バージョン 4.0.0 以降で使用できる」。
また旧版と新版で2パターン必要なのか...
0494nobodyさん04/07/09 11:51ID:+WklyQCB
今回初めてMySQLをインストールした初心者です。

参考書を見ながらインストールしたのですが、
EnvironmentタブのMyODBCのところに

NotFound
Driver3.51Not Found

と出ています。これは、参考書ではDriver Version 〜というふうに
なっていました。

あと、Databasesタブには、testのみが表示されていて、
mysqlが表示されていません。show dababasesコマンドでもmysqlは
表示されません。C:\mysql\dataには、ちゃんとmysqlのフォルダはあります。

この場合、MySQLにmysqlを認識させるにはどのようにしたらいいのでしょうか?
上記のNotFoundエラーを解消すればいいのかな・・・と思うのですが、
どのようすればいいのか分かりません。

ご存知の方がいらっしゃいましたら、よろしくお願いいたします。
0495nobodyさん04/07/09 15:38ID:???
質問!
オラクルマスター銀って学生でも比較的簡単に取得可能でしょうか?
0496nobodyさん04/07/09 15:45ID:???
>>495
スレタイ嫁
0497nobodyさん04/07/09 17:20ID:???
>>494
用語(名称)が正確でない。だから他人から
見ると意味がつかみづらい。

>EnvironmentタブのMyODBCのところに
>NotFound
>Driver3.51Not Found

これはMyODBCの状態だから、ODBC経由で接続を
行わないならそのままで構わない(正常)。必要であれば
ODBCドライバ(MyODBC)をインストールする。

>あと、Databasesタブには、testのみが表示されていて、
>mysqlが表示されていません。

恐らくWinMySQLadminで接続に使っているMySQLユーザが
データベースmysqlを参照できる権限がないものと思われる。
接続ユーザをrootに変えるか、GRANTで該当ユーザに権限を与える。

>>495
受験費用だけの問題。覚える"だけ"だから
むしろ若いうちの方が取りやすい。
あとベンダー資格なんぞ学生が持ってても
意味無いよ。無駄。会社入ってからで充分。
0498nobodyさん04/07/09 18:33ID:???
>あとベンダー資格なんぞ学生が持ってても
>意味無いよ。無駄。会社入ってからで充分。
いやそうでもないよ、
大企業は効果薄いかもしれないが
中小だと結構はったりが利くぞ
大企業無理で中小に入る可能性があるなら損は無い。

あとシスアドとか情報処理1種などもそれなりに効果あり。
0499名無しさん@そうだ選挙に行こう04/07/11 12:16ID:xhyXSdhv
MySQLのデータベースに出てくる「オーバーヘッド」って
サーバーへの負荷とイコールで考えて問題なっしんぐでしょうか??
ぐぐったけど、全く関連説明がデテコナインダス
0500名無しさん@そうだ選挙に行こう04/07/11 17:05ID:???
>>499
オーバヘッドと言ったら一般的には遅延やロスのこと。
負荷とは違う。
0501nobodyさん04/07/11 21:06ID:???
INSERT INTO $t1 SELECT * FROM $2
の場合、t1とt2のフィールド数及びフィールドタイプは同等
でなければならないのでしょうか?
t1の方のフィールドは$t2+3フィールドであります。


0502nobodyさん04/07/11 22:03ID:???
なんだそのめちゃくちゃな構文は
INSERTにSELECT・・・
050350104/07/12 07:39ID:???
めちゃくちゃね・・・
2行を1行で処理したいだけなんだけどなぁ
WHEREに全部書かないとダメかな

>>502
MySQLを使った事がありますか?
0504nobodyさん04/07/12 10:11ID:???
朝からわらた
050550104/07/12 12:39ID:???
スマートではありませんが自己解決しました
INSERTにSELECTを使った、めちゃくちゃな構文ですが正常に処理されています
0506nobodyさん04/07/12 13:08ID:???
質問内容の大予想(or透視)を要求することに素で気がついてなかったわけね。
その上“正常に処理”って、ゴミプログラムをゴミ箱行きにしたとかいうオチか?
0507nobodyさん04/07/12 19:42ID:???
>>503
副問い合わせの構文覚えろクズ
0508nobodyさん04/07/12 19:43ID:???
>>501
お前みたいに偉そうな質問者初めて見た。
そろそろ夏か?
0509nobodyさん04/07/12 21:19ID:???
502=506=507=508
本当に夏だよな
0510nobodyさん04/07/12 21:50ID:???
認定厨降臨か・・・
0511nobodyさん04/07/12 22:01ID:???
=510
0512nobodyさん04/07/13 00:12ID:AIgAJnQb
>>497
ご返事、ありがとうございます。
また、読み辛い文章で大変申し訳ございませんでした。

本題に入らせて頂きます。
GRANTで権限を与えようと試みましたが、以下のエラーが出ます。

ERROR 1045: Access denied for user: '@localhost' (Using password: NO)

これはパスワードが違うということでしょうか?
OSへのログインの時やMySQLのmy.ini.Setupタブに書いてあるパスワードや
Administrator(←UserName) で試してみましたが、同じエラーが出ます。

原因等、ご存知の方がいらっしゃいましたら、ご教授の程、よろしくお願い致します。
0513nobodyさん04/07/13 01:43ID:???
>>512
>'@localhost'
ユーザが指定されてないように思われ。
もちっと前の、コンソールで入力した操作から書き出して味噌。
■ このスレッドは過去ログ倉庫に格納されています