2017-09-02 2 views
0

私はこのコミュニティで新しく、mysqlデータベースからデータを取得するクエリで作業する必要があります。このクエリはありますが、新しいテーブルを追加する必要があります。なぜクエリにエイリアスがあるのか​​わかりません、私はそれがどのように動作するのか分からない、誰かが私を助けることができますか? これは私のクエリです:エイリアスを使ったmysqlクエリの仕組みは?

SELECT ins.matricula, pe.nombres, pe.appaterno, pe.apmaterno, co.calleynum, co.colonia, co.municipio, co.telfijo, co.telcelular, pe.fechanac, pe.sexo, co.email, pe.institucion, tu.tnombres, tu.tappaterno, tu.tapmaterno, tu.direccion, tu.telefono, ins.fechains, ins.niveledu, ins.fechaini, ins.horario 
FROM Inscripciones ins 
LEFT JOIN Perfiles pe 
     ON pe.idperfil=ins.idperfil 
LEFT JOIN Contactos co 
     ON co.idperfil = pe.idperfil 
LEFT JOIN Tutores tu 
     ON tu.matricula = ins.matricula 
WHERE pe.idperfil='$var' 

は、私は、MySQLのドキュメントを読みましたが、私はそれがどのように動作するかを理解することはできません。

+0

です。「JOIN」は何ですか? – CodeGodie

+0

私は、JOINがデータベースの複数のテーブルを接続できることを理解していますが、エイリアスを使用したことはありません。 – alexchvrches

+1

エイリアスは、名前が示すとおりです。あなたのテーブル名の別の名前。したがって、あなたの例ではテーブル名は 'Inscripciones'です。この行の' 'Inscripciones ins'では' 'ins" 'は' Inscripciones'のエイリアスです。クエリをより小さく/簡単にするための単なる方法です。エイリアスはニックネームに似ています(マイケルのエイリアスは "マイク"です) – CodeGodie

答えて

0

MySQLでは、「エイリアス」を宣言して後でクエリを簡素化できます。 通常、これは "AS"演算子で表されますが、あなたの例のように "AS"なしで宣言することもできます。あなたの例では

SELECT ins.matricula, {...} 
FROM Inscripciones ins {...} 

insは "Inscripciones" テーブルの別名として設定されています。 "Inscripciones"と入力するのではなく、クエリ全体でinsを使用することができます。これは、SELECTステートメントで見ることができます。 何かを覚えておいてください - SQLのエイリアスは、最初に使用された後で宣言することができます。あなたの例では、実際にinsInscripcionesのエイリアスとして宣言する前にSELECTins.matriculaを取得する場合があります。 時々これは直観に反しているようですが、少し実験すると意味があることを約束します。

「AS」を含めるのがあまりあいまいではありません。これは、SQLクエリーを読み書きしているときに意味があります。 例:... FROM Inscripciones AS ins

を明確にするには、エイリアスを使用すると、クエリの結果を変更していますが、テーブル名にしたいたびに再記述する必要はありませんので、あなたがきれいクエリを記述できますしません。これを使って。

+0

Oh yeah!わかった!私は今理解しています、混乱させて申し訳ありません。ありがとう、あなたは助けてくれる良い人です:) – alexchvrches

+0

謝罪する必要はありません。エイリアスのコンセプトは最初は把握が難しいかもしれません。 :) また、私は私の答えでは言及していませんが、これが本当に新しいコンセプトの場合、あなたが望むエイリアスを作ることができます。 例: 'SELECT * FROM dog AS cat WHERE cat.color =" black ";' これは当然のことではありませんが、許可されています。 – slothluvchunk

0

同じテーブルを複数回使用する必要がない限り、テーブルにエイリアスを付ける必要はありませんが、テーブルに同じ名前の列がある場合は、タイプを短くすることができます。代わりに

SELECT myfulltable1name.id, myfulltable2name.id 

を記述することの

ここ

(あなたはT1とT2として、あなたのテーブルをエイリアスしている場合)あなたは

SELECT t1.id, t2.id 

を書くことができますが、我々が使用してクエリの例です同じテーブルを複数回に分けて、別名で区切る必要があります。

SELECT 
    workAddresses.City as WorkCity, 
    homeAddresses.City as HomeCity 
FROM 
    Addresses workAddresses 
    INNER JOIN 
    Addresses homeAddresses 
    ON 
    workAddresses.UserID = homeAddresses.UserID 
WHERE 
    workAddresses.type = 'work' AND 
    homeAddresses.type = 'home' 

ここで、アドレステーブルには、ユーザーの職場住所と自宅住所が格納されます。私たちは仕事と家の住所が同じ列にあるので、住所表に2回参加する必要があります。われわれはそれに感覚的なエイリアスを与えて、どちらがどちらであるかを知ることができます。where節を使用して、workAddress表の別名はあなたが自宅の都市

で仕事市とであるかを知ることができますので、私はまた、選択した列名に別名をつけ気づく型「仕事」でそれらのレコードに

を指し、あなたはサブクエリを作る場合、結果は使用可能にするためにエイリアスされなければならないように時々、あなたは、エイリアスを使用する必要があります。

SELECT 
    workAddresses.City as WorkCity, 
    homeAddresses.City as HomeCity 
FROM 
    (SELECT * FROM Addresses WHERE type ='work') workAddresses 
    INNER JOIN 
    (SELECT * FROM Addresses WHERE type ='home') homeAddresses 
    ON 
    workAddresses.UserID = homeAddresses.UserID 

彼女を私たちはサブクエリによってアドレステーブルから情報を得ました。また、括弧つきのSQL文はエイリアスを持たなければなりません。

エイリアスは常に、エイリアスされるオブジェクトの最初のポイントで宣言されます。テーブルの場合、これはFROMセクションにあり、これはSELECTセクションのカラムです

データベースが実際にfromセクションを最初に実行し、すべてのテーブルを一緒に接続しているかのように考えることができます。ここでは、行をフィルタリングするために、最後にselectを実行して、必要な列だけを取得します。 C#にはLINQというクエリ言語が組み込まれています。これはより論理的な方法で物事を提示します。FROM table WHERE something = something SELECT somecolumns - 「変数の名前付けなどのように、最初に導入されたときにエイリアスが発生します」と言うのが簡単になります。 SQLは何年もの間存在しています。あなたはそれに慣れます

+0

テーブルのエイリアスはどこでできますか?LEFT JOIN Perfiles peセクションでは、例えば? – alexchvrches

+0

テーブルは常にクエリに書き込まれる時点でエイリアスされています。したがって、このテーブルは常にジョインを行っている 'from'セクションにあります。選択された列は列セクションにエイリアスされます。テーブルは通常、エイリアスをテーブル名の直後に記述することによってエイリアス化されます。列は、通常、列名の後ろに 'AS別名'を書くことによってエイリアス化されます。私はその違いは、一部の初期DBでは一部の場所では期待していたが、他の場所では期待しなかったためだと思う。現代のデータベースは、テーブル/カラム名とエイリアスの間にASを書くかどうかは気にしないでください –

+0

あなたのためにいくつかの情報が追加されました –

0

SQL Aliasは、ちょうどその名前が言うところのaliasです。これは単にテーブル名の別の名前(短い名前)です。

だからあなたの例では、テーブル名がInscripcionesで、あなたが言っているFROM Inscripciones insこの行に"ins"Inscripcionesの別名です。クエリをより小さく/簡単にするための単なる方法です。別名ニックネームのようなものである(すなわち、マイケルの別名は「マイク」である)

エイリアスは通常、このよう "AS"で設定されている

SELECT * FROM Users AS u 

をこのように短縮することができます。

SELECT * FROM Users u 
0

MySQLクエリのエイリアスは、テーブルの一時的な短い名前に似ています。それらは必ずしも使用する必要はありませんが、複雑なクエリを作成する必要がある場合は時間を節約できます。 JOINSを使用して1つのクエリで1つ以上のテーブルを取得しようとすると、主にクエリで使用されます。

テーブル名が「employee_records」であるとします。次に、テーブルのフィールドを取得しようとすると、employee_records.idが表示されます。 'e'というテーブル名にエイリアスを使用すると、フィールドを選択するとe.idになります。

希望が明確になることを願っています。 ここでのSQLエイリアスについての簡単な説明は、https://www.w3schools.com/sql/sql_alias.asp