タグ付けされた質問 「sql」

構造化照会言語(SQL)は、データベースを照会するための言語です。質問には、コード例、テーブル構造、サンプルデータ、使用するDBMS実装(MySQL、PostgreSQL、Oracle、MS SQL Server、IBM DB2など)のタグを含める必要があります。質問が特定のDBMSにのみ関連している場合(特定の拡張機能を使用)、代わりにそのDBMSのタグを使用してください。SQLでタグ付けされた質問への回答には、ISO / IEC標準SQLを使用する必要があります。

3
戻り値がnullの場合、postgresqlは0を返します
avg(price)を返すクエリがあります select avg(price) from( select *, cume_dist() OVER (ORDER BY price desc) from web_price_scan where listing_Type='AARM' and u_kbalikepartnumbers_id = 1000307 and (EXTRACT(Day FROM (Now()-dateEnded)))*24 < 48 and price>( select avg(price)* 0.50 from(select *, cume_dist() OVER (ORDER BY price desc) from web_price_scan where listing_Type='AARM' and u_kbalikepartnumbers_id = 1000307 and (EXTRACT(Day FROM …
99 sql  postgresql 

3
オブジェクトへの未解決の参照[INFORMATION_SCHEMA]。[TABLES]
[INFORMATION_SCHEMA].[TABLES]ビューにアクセスするUDFを作成しました。 CREATE FUNCTION [dbo].[CountTables] ( @name sysname ) RETURNS INT AS BEGIN RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name ); END Visual Studio内では、ビューのスキーマと名前の両方に警告が表示されます。 SQL71502:関数:[dbo]。[CountTables]には、オブジェクト[INFORMATION_SCHEMA]。[TABLES]への未解決の参照があります。 データベースプロジェクトは問題なく公開できますが、UDFは正しく実行されているようです。IntelliSenseがビューの名前を入力してくれるので、問題はないようです。 sys.objectsこのビューの代わりに使用する実装も変更しようとしましたが、このビューにも同じ警告が表示されました。 この警告を解決するにはどうすればよいですか?



30
コレクション/配列/リストからカンマ区切りの文字列を作成する最も洗練された方法は?
データベースでの作業中に、クエリ文字列を記述していることに気付きました。この文字列には、リスト/配列/コレクションのwhere句にいくつかの制限を課す必要があります。次のようになります。 select * from customer where customer.id in (34, 26, ..., 2); これを、文字列のコレクションがあり、この文字列のコンマ区切りのリストを1つの文字列だけで作成したいという質問に減らすことで、これを簡略化できます。 これまでに使用した私のアプローチは次のようなものです。 String result = ""; boolean first = true; for(String string : collectionOfStrings) { if(first) { result+=string; first=false; } else { result+=","+string; } } しかし、これは非常に醜いものです。特に、(すべてのSQLクエリのように)構築された文字列が複雑になっている場合、最初の外観で何が起こるかはわかりません。 あなたの(より)エレガントな方法は何ですか?
98 java  sql  string 

2
ユーザーパスワードのクレンジング
ユーザー提供のパスワードをハッシュしてデータベースに保存する前に、どのようにエスケープまたはクレンジングする必要がありますか? PHP開発者がセキュリティ上の目的でユーザーのパスワードをハッシュすることを検討するとき、開発者は多くの場合、他のユーザー提供のデータと同じようにそれらのパスワードを考える傾向があります。この問題は、パスワードの保存に関連するPHPの質問でよく出てきます。開発者は多くの場合のような機能を使用してパスワードを清めるために望んでいるescape_string()(様々な繰り返しで)、 、htmlspecialchars()、addslashes()それをハッシュし、それをデータベースに格納する前に他の人。
98 php  sql  pdo  hash 

5
クラスター化と非クラスター化
私のSQL(Server 2008)に関する低レベルの知識は限られており、現在DBAによって挑戦されています。説明させてください(私は私が正しいことを期待して明白な発言を述べましたが、何か問題を見つけた場合は教えてください)シナリオ: 人のための「裁判所命令」を保持するテーブルがあります。テーブル(名前:CourtOrder)を作成したとき、次のように作成しました。 CREATE TABLE dbo.CourtOrder ( CourtOrderID INT NOT NULL IDENTITY(1,1), (Primary Key) PersonId INT NOT NULL, + around 20 other fields of different types. ) 次に、非効率的なインデックスを主キーに適用しました(効率を高めるため)。私の理由は、それが一意のフィールド(主キー)であり、主に選択目的のためにインデックス付けする必要があることです。Select from table where primary key = ... 次に、CLUSTEREDインデックスをPersonIdに適用しました。その理由は、作業の大部分が人の注文を得ているため、特定の人の注文を物理的にグループ化するためでした。そう、select from mytable where personId = ... 私は今これに引っ張られています。クラスタ化インデックスを主キーに配置し、通常のインデックスをpersonIdに配置する必要があると言われました。それは私には非常に奇妙に思えます。まず、クラスター化インデックスを一意の列に配置するのはなぜですか。それはクラスタリングとは何ですか?確かに、それはクラスタ化インデックスの無駄です。通常のインデックスが一意の列で使用されると思っていました。また、インデックスをクラスター化すると、別の列をクラスター化できなくなります(テーブルごとに1つですよね?)。 私が誤りを犯したと言われる理由は、クラスター化されたインデックスをPersonIdに置くと挿入が遅くなると彼らが信じているからです。選択の速度が5%向上すると、挿入と更新の速度が95%低下します。それは正しいですか? personIdをクラスター化するため、PersonIdを挿入または変更するときは常にSQL Serverがデータを再配置する必要があると彼らは言います。 それで私は尋ねました、もしそれがとても遅いのになぜSQLはCLUSTERED INDEXの概念を持っているのでしょうか?彼らが言っているのと同じくらい遅いですか?最適なパフォーマンスを実現するには、どのようにインデックスを設定する必要がありますか?私はSELECTがIN​​SERTよりも使用されていると思っていました...しかし、彼らはINSERTSでロックの問題があると言っています... 誰かが私を助けてくれることを願っています。


3
PostgreSQLは「アクセントを区別しない」照合をサポートしていますか?
Microsoft SQL Serverでは、「アクセントを区別しない」照合(データベース、テーブル、または列)を指定できます。つまり、次のようなクエリが可能です。 SELECT * FROM users WHERE name LIKE 'João' Joao名前のある行を検索します。 unaccent_string contrib関数を使用してPostgreSQLの文字列からアクセントを取り除くことが可能であることは知っていますが、PostgreSQL がこれらの「アクセントを区別しない」照合をサポートしているかどうか疑問に思っているため、SELECT上記が機能します。

10
関連付けのカウントがゼロより大きいすべてのレコードを検索します
簡単だと思ったことをしようとしていますが、簡単ではないようです。 多くの空席があるプロジェクトモデルがあります。 class Project < ActiveRecord::Base has_many :vacancies, :dependent => :destroy end 少なくとも1つの空席があるすべてのプロジェクトを取得したいと考えています。私はこのようなものを試しました: Project.joins(:vacancies).where('count(vacancies) > 0') しかしそれは言う SQLite3::SQLException: no such column: vacancies: SELECT "projects".* FROM "projects" INNER JOIN "vacancies" ON "vacancies"."project_id" = "projects"."id" WHERE ("projects"."deleted_at" IS NULL) AND (count(vacancies) > 0)。

7
複数の列で重複を見つけるにはどうすればよいですか?
だから私はこのSQLコードのようなことをしたい: select s.id, s.name,s.city from stuff s group by s.name having count(where city and name are identical) > 1 以下を生成するには(ただし、名前のみまたは都市のみが一致する場所は無視し、両方の列にある必要があります): id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris

16
SQLステートメントのフィールドから先行ゼロを削除する
SQLServerデータベースから読み取り、抽出ファイルを生成するSQLクエリに取り組んでいます。単純なVARCHAR(10)フィールドである特定のフィールドから先行ゼロを削除するための要件の1つ。したがって、たとえば、フィールドに「00001A」が含まれている場合、SELECTステートメントはデータを「1A」として返す必要があります。 この方法で先行ゼロを簡単に削除する方法はSQLにありますか?RTRIM関数があることは知っていますが、これはスペースを削除するだけのようです。
98 sql  sql-server  tsql 

18
週番号から週の開始日と終了日を取得する
データベースにメンバーの結婚式の日付をカウントするクエリがあります。 SELECT SUM(NumberOfBrides) AS [Wedding Count] , DATEPART( wk, WeddingDate) AS [Week Number] , DATEPART( year, WeddingDate) AS [Year] FROM MemberWeddingDates GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate) ORDER BY SUM(NumberOfBrides) DESC 毎週の初めと終わりが結果セットに含まれる場合、どのように計算しますか? SELECT SUM(NumberOfBrides) AS [Wedding Count] , DATEPART(wk, WeddingDate) AS [Week Number] , DATEPART(year, WeddingDate) AS [Year] , ??? …

10
SQLビューを使用する理由は何ですか?
私はSQL Server 2008の聖書を読んでおり、ビューセクションをカバーしています。しかし、著者は実際にはビューの目的を説明していません。ビューの適切な用途は何ですか?それらを自分のウェブサイトで使用する必要がありますか?それらの利点は何ですか?
98 sql  sql-server 

5
SQLite INSERT-重複キー更新(UPSERT)
MySQLには次のようなものがあります。 INSERT INTO visits (ip, hits) VALUES ('127.0.0.1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1; この機能がSQLiteに存在しないことを知っている限り、2つのクエリを実行せずに同じ効果を得る方法があるかどうかを知りたいです。また、これが不可能な場合、あなたは何を好みますか: SELECT +(INSERTまたはUPDATE)または UPDATE(+ UPDATEが失敗した場合は INSERT )
98 sql  mysql  database  sqlite  upsert 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.