MySql selfjoin Problem – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self MySql selfjoin Problem Tue, 31 Jul 12 12:40:03 Z https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554777#m1554777 https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554777#m1554777 <p>Hallo!</p> <p>Ich habe ein Problem mit einer Abfrage.<br> Meine Tabelle hat 4 Spalten: "id", "name", "eingeladenVon" und "rausgeworfenVon".<br> Die Spalten "eingeladenVon" und "rausgeworfenVon" enthalten eine Id aus der Spalte "id" bzw. können sie auch NULL sein.</p> <p>Ich suche eine Abfrage die mir zusätzlich die Namen zu den Ids aus "eingeladenVon" und "rausgeworfenVon" zu einem Datensatz gibt.</p> <p>Zum Beispiel gibt es die Datensätze<br> id, name  , eingeladenVon, rausgeworfenVon<br> 1 , heidi , NULL        , NULL<br> 2 , peter , 1           , NULL<br> 3 , michel, 2           , 1</p> <p>Wenn ich jetzt die Daten von "michel" möchte, sollen sie so aussehen:<br> id, name  , eingeladenVon, rausgeworfenVon, eingeladenVonName, rausgeworfenVonName<br> 3 , michel, 2            , 1              , peter            , heidi</p> <p>Mein Anfang sieht gerade so aus.</p> <pre><code class="block language-sql"><span class="token keyword">SELECT</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>id<span class="token punctuation">`</span></span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>name<span class="token punctuation">`</span></span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>eingeladenVon<span class="token punctuation">`</span></span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>rausgeworfenVon<span class="token punctuation">`</span></span><span class="token punctuation">,</span> <span class="token identifier"><span class="token punctuation">`</span>tbl2<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>name<span class="token punctuation">`</span></span> <span class="token keyword">AS</span> <span class="token identifier"><span class="token punctuation">`</span>eingeladenVonName<span class="token punctuation">`</span></span> <span class="token keyword">FROM</span> <span class="token identifier"><span class="token punctuation">`</span>tbl<span class="token punctuation">`</span></span> <span class="token keyword">AS</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span> <span class="token keyword">INNER</span> <span class="token keyword">JOIN</span> <span class="token identifier"><span class="token punctuation">`</span>tbl<span class="token punctuation">`</span></span> <span class="token keyword">AS</span> <span class="token identifier"><span class="token punctuation">`</span>tbl2<span class="token punctuation">`</span></span> <span class="token keyword">ON</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>eingeladenVon<span class="token punctuation">`</span></span> <span class="token operator">=</span> <span class="token identifier"><span class="token punctuation">`</span>tbl2<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>id<span class="token punctuation">`</span></span> <span class="token keyword">WHERE</span> <span class="token identifier"><span class="token punctuation">`</span>tbl1<span class="token punctuation">`</span></span><span class="token punctuation">.</span><span class="token identifier"><span class="token punctuation">`</span>id<span class="token punctuation">`</span></span> <span class="token operator">=</span> <span class="token number">3</span> </code></pre> <p>Leider bekomme ich damit einen leeren Datensatz wenn ich die id 2 suche und nur die id anstatt dem Namen wenn ich nach 3 suche.</p> <p>Hat jemand einen Hinweis wo mein Fehler steckt?</p> <p>Danke!</p> MySql selfjoin Problem Tue, 31 Jul 12 13:23:21 Z https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554779#m1554779 https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554779#m1554779 <p>Hallo Wolfgang,</p> <blockquote> <p>Mein Anfang sieht gerade so aus.</p> <pre><code class="block language-sql"></code></pre> </blockquote> <p>SELECT</p> <blockquote> <p><code>tbl1</code>.<code>id</code>,<br>     <code>tbl1</code>.<code>name</code>,<br>     <code>tbl1</code>.<code>eingeladenVon</code>,<br>     <code>tbl1</code>.<code>rausgeworfenVon</code>,<br>     <code>tbl2</code>.<code>name</code> AS <code>eingeladenVonName</code><br> FROM<br>     <code>tbl</code> AS <code>tbl1</code><br> INNER JOIN<br>     <code>tbl</code> AS <code>tbl2</code><br> ON<br>     <code>tbl1</code>.<code>eingeladenVon</code> = <code>tbl2</code>.<code>id</code><br> WHERE<br>     <code>tbl1</code>.<code>id</code> = 3</p> </blockquote> <pre><code class="block"> > Leider bekomme ich damit einen leeren Datensatz wenn ich die id 2 suche und nur die id anstatt dem Namen wenn ich nach 3 suche. Ich bin nicht ganz sicher, aber es könnte am inner join liegen. Ich vermute du möchtest eher einen left join, da dieser Datensätze mitnimmt, die in der verknüpften Tabelle den Wert NULL haben. [Schau mal hier.](http://answers.yahoo.com/question/index?qid=20070427082608AA7DwSh) ciao romy </code></pre> MySql selfjoin Problem Tue, 31 Jul 12 14:53:55 Z https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554778#m1554778 https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554778#m1554778 <p>Tach!</p> <blockquote> <p>Meine Tabelle hat 4 Spalten: "id", "name", "eingeladenVon" und "rausgeworfenVon".<br> Die Spalten "eingeladenVon" und "rausgeworfenVon" enthalten eine Id aus der Spalte "id" bzw. können sie auch NULL sein.<br> Ich suche eine Abfrage die mir zusätzlich die Namen zu den Ids aus "eingeladenVon" und "rausgeworfenVon" zu einem Datensatz gibt.</p> </blockquote> <p>Nimm korrelierte Subselects (correlated subselect/subquery). Die sind in dem Fall einfacher anzuwenden und zu warten als Self-Joins.</p> <p>dedlfix.</p> MySql selfjoin Problem Tue, 31 Jul 12 13:54:52 Z https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554780#m1554780 https://forum.selfhtml.org/self/2012/jul/31/mysql-selfjoin-problem/1554780#m1554780 <p>Hallo romy!</p> <blockquote> <p>Ich bin nicht ganz sicher, aber es könnte am inner join liegen. Ich vermute du möchtest eher einen left join, da dieser Datensätze mitnimmt, die in der verknüpften Tabelle den Wert NULL haben. <a href="http://answers.yahoo.com/question/index?qid=20070427082608AA7DwSh" rel="nofollow noopener noreferrer">Schau mal hier.</a></p> </blockquote> <p>Ja, daran lag es! Übrigens hatte ich am Anfang auch nicht die ID bekommen sondern den Namen. Ich hab da irgendwas verdreht.</p> <p>Danke vielmals!<br> Wolfgang</p>