を繰り返すことなくは、私は「uidは」ユーザーテーブルと他の二つのテーブルの外部キーの主キーである3つのテーブルのユーザー、専門職と教育を持って、私は3つのテーブルを結合したい値
を超える2つのテーブルを結合します。私が取得する方法はあり
user profession education
+------+-------+ +-----+----------+ +-----+---------+
| uid | uName | | uid | profName | | uid | eduName |
+------+-------+ +-----+----------+ +-----+---------+
| 1 | aaa | | 1 | prof1 | | 1 | edu1 |
| 2 | bbb | | 1 | prof2 | | 1 | edu2 |
| 3 | ccc | | 2 | prof1 | | 1 | edu3 |
| | | | 3 | prof3 | | 3 | edu4 |
| | | | 3 | prof2 | | | |
+------+-------+ +-----+----------+ +-----+---------+
Expected output
+------+-------+-----+----------+-----+---------+
| uid | uName | uid | profName | uid | eduName |
+------+-------+-----+----------+-----+---------+
| 1 | aaa | 1 | prof1 | 1 | edu1 |
| null | null | 1 | prof2 | 1 | edu2 |
| null | null |null | null | 1 | edu3 |
| 2 | bbb | 2 | prof1 | null| null |
| 3 | ccc | 3 | prof3 | 3 | edu4 |
| null | null | 3 | prof2 | null| null |
+------+-------+-----+----------+-----+---------+
私は私が値
+------+-------+-----+----------+-----+---------+
| uid | uName | uid | profName | uid | eduName |
+------+-------+-----+----------+-----+---------+
| 1 | aaa | 1 | prof1 | 1 | edu1 |
| 1 | aaa | 1 | prof2 | 1 | edu1 |
| 1 | aaa | 1 | prof1 | 1 | edu2 |
| 1 | aaa | 1 | prof2 | 1 | edu2 |
| 1 | aaa | 1 | prof1 | 1 | edu3 |
| 1 | aaa | 1 | prof2 | 1 | edu3 |
+------+-------+-----+----------+-----+---------+
を複製できますクエリ
select u.uid ,u.uName,p.uid , p.profName,e.uid,e.eduName
from user u inner join profession p on u.uid=p.pid
inner join education e on u.uid = e.uid
where u.uid=p.uid
and u.uid=e.uid
and i.uid=1
次しようとした1つのテーブルにつながる生産するために、これらのテーブルに参加したいです値を繰り返さないで出力します。 ありがとう
あなたが繰り返し値を求めています。 SQL結果セットには固有の順序付けはありません。必要な書式設定はアプリケーションレイヤーで行うのが最適です。 –
あなたの結果を見ると、複写された行はありません。繰り返しの値を持つ列があります。結果の書式が異なる場合は、プレゼンテーションのクライアント側を操作する必要があります。 – scaisEdge
nullのロジックが明確ではありません。 prof1とprof2のuidが同じ場合、なぜprof1にaaaがあり、prof2にnullがあるのですか?これらの2つの行の結果の違いについての論理は何ですか? – clinomaniac