SQL-Brett 2 – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self SQL-Brett 2 Fri, 01 Nov 02 11:24:46 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301639#m301639 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301639#m301639 <p>Hi, noch eine SQL-Frage, auf deren Lösung ich einfach nicht komme:</p> <p>Mir ist der Fremdschlüssel einer Tabelle bekannt. In der Tabelle befinden sich mehrere Datensätze mit diesem FK.<br> Ein weiteres Feld in dieser Tabelle ist 'version' - als tinyint.</p> <p>Ich will jetzt aus dieser Tabelle den Datensatz, der diesen Fremdschlüssel hat und die höchste Version.</p> <p>Meine Idee war:</p> <p>"SELECT MAX(version) FROM documentContent WHERE EXISTS (SELECT * FROM document WHERE id_document = " . $documentId . ") GROUP BY version"</p> <p>Aber das geht so nicht.</p> <p>Gruß, basi</p> SQL-Brett 2 Fri, 01 Nov 02 11:26:45 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301640#m301640 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301640#m301640 <p>Sorry, bei meinem Select war das zweite FROM falsch - da gehört natürlich documentContent hin...</p> <blockquote> <p>"SELECT MAX(version) FROM documentContent WHERE EXISTS (SELECT * FROM documentContent WHERE id_document = " . $documentId . ") GROUP BY version"</p> </blockquote> <blockquote> <p>Gruß, basi</p> </blockquote> SQL-Brett 2 Fri, 01 Nov 02 21:12:38 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301646#m301646 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301646#m301646 <p>Hi,</p> <p>wie wäre es mit einem Trick (mir fällt gerade nicht besseres ein):</p> <p>SELECT *<br> FROM documentContent<br> WHERE id_document = $documentId<br> ORDER BY version DESC;</p> <p>Nach der absteigenden Sortierung ist also der ersten Datensatz der mit der höchstens Version...</p> SQL-Brett 2 Sat, 02 Nov 02 12:53:44 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301647#m301647 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301647#m301647 <p>Hi basi</p> <p>Könnte dies Deinen Vorstellungen entsprechen:</p> <p>"SELECT Max(version) FROM documentContent GROUP BY id_document HAVING id_document=".$documentId</p> <p>Dein Statement macht definitiv keinen Sinn bei max(version) und GROUB BY version !!! id_document wäre hier sinnvoller.<br> Zusätzlich kannst Du mit der HAVING-Klausel das Ergebniss nach dem GROUP BY nochmals einschränken.</p> <p>Grüsse<br> Eisbär</p> SQL-Brett 2 Fri, 01 Nov 02 12:13:42 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301641#m301641 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301641#m301641 <p>sag mal was du genau willst aus der tabelle haben willst...</p> SQL-Brett 2 Fri, 01 Nov 02 20:56:35 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301643#m301643 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301643#m301643 <p>Hallo basi,</p> <blockquote> <blockquote> <p>"SELECT MAX(version) FROM documentContent WHERE EXISTS (SELECT * FROM documentContent WHERE id_document = " . $documentId . ") GROUP BY version"</p> </blockquote> </blockquote> <p>Nicht getestet, aber vom Prinzip her:</p> <p>SELECT MAX(version) FROM documentContent WHERE id_document = $documentId</p> <p>Grüße,</p> <p>Christian</p> SQL-Brett 2 Fri, 01 Nov 02 12:37:02 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301642#m301642 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301642#m301642 <blockquote> <p>sag mal was du genau willst aus der tabelle haben willst...</p> </blockquote> <p>Ich will aus dieser Tabelle den Datensatz, der diesen Fremdschlüssel (der bekannt ist) hat und die höchste Version.</p> <p>Hast Du die erste Nachricht gelesen? Ich dachte, das wäre da klar ausgedrückt.</p> <p>Gruß, basi</p> SQL-Brett 2 Sat, 02 Nov 02 00:04:30 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301644#m301644 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301644#m301644 <blockquote> <p>Nicht getestet, aber vom Prinzip her:</p> </blockquote> <blockquote> <p>SELECT MAX(version) FROM documentContent WHERE id_document = $documentId</p> </blockquote> <p>Hi, danke für Deine Antwort, check ich morgen mal aus ... aber ich dachte, bei Aggregatfunktionen gehört immer ein Group by ans Ende...?</p> <p>Gute Nacht, basi</p> SQL-Brett 2 Sat, 02 Nov 02 08:58:14 Z https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301645#m301645 https://forum.selfhtml.org/self/2002/nov/1/sql-brett-2/301645#m301645 <p>Hallo basi,</p> <blockquote> <p>Hi, danke für Deine Antwort, check ich morgen mal aus ... aber ich dachte, bei Aggregatfunktionen gehört immer ein Group by ans Ende...?</p> </blockquote> <p>AFAIK (bin mir nicht sicher) nicht immer - und zwar genau dann, wenn Du nur Aggregatfunktionen selectest und nicht noch zusätzliche Felder. Falls das obere nicht klappt, kannst Du ja immer noch ein GROUP BY versuchen... :-)</p> <p>Grüße,</p> <p>Christian</p>