2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-26 06:48:04 +02:00
Commit graph

10 commits

Author SHA1 Message Date
Stefan Koch
097d360423 MAX in WHERE not possible
You cannot use MAX() in a WHERE clause, instead use a subquery.

The ORDER BY is also unneeded, because we only select the maximum. So what to order, there is only one number (even if multiple entries with the same number).
2013-07-30 11:18:13 +02:00
Martin Thoma
d7e7613c30 textsetzung 2013-07-30 11:17:53 +02:00
Stefan Koch
756fee46ef left join sufficient
A LEFT (OUTER) JOIN is totally sufficient here, you do not want to have one Berater NULL with about 10 customers (because some customers do not have a Berater).

Moreover, when using the altered version as expected (i.e. the one with Kunden2Berater table) there is no column Kunden.berater_id anymore. You thus have to join Kunden2Berater.

I have NOT checked the COUNT throroughly, but according to my understand you will have to count on one of the Kunden2Berater columns, because COUNT() will ignore NULL columns and this is what we want. If LEFT JOIN returned a row where there are no columns on the right side, the count shall give NULL. Yet, I have to admit that I do not understand COUNT() too well. The DISTINCT is then unneeded, because we GROUP BY berater_id and the kunden_id for each berater itself will already be unique. So please do not take the COUNT statement for granted now, it's untested. http://www.techonthenet.com/sql/count.php
2013-07-30 11:14:45 +02:00
Martin Thoma
4b52753c61 removed TODO 2013-07-30 11:09:59 +02:00
Martin Thoma
b9a6642d0e compiled PDF 2013-07-30 11:08:14 +02:00
Stefan Koch
8f0b025fca corrected SQL statement
- it's totally uneeded to join the FROM table once again
- I do not know about specifying multiple tables in one JOIN, it might be wrong, but at least it's (same as using CROSS JOIN syntax with multiple FROM tables) at least bad behaviour
- omitting the ON clause when using JOIN is afaik not optional in the SQL standard. MySQL allows it, but then uses CROSS JOIN. Here you either want NATURAL JOIN or JOIN with ON clause. I prefer JOIN with explicit ON clauses all the time (because I never call my columns Berater.berater_id, but Berater.id and in foreign key definitions then Foo.berater_id), but since in the lectures NATURAL JOIN was so often prefered, I thought about using that. In my own exam, I will always use ON clause, because I am more used to that and I will not run into troubles if there are two columns with the same name, which is exactly the problem here. There are two tables with column "name". The second NATURAL JOIN would fail, because it would try to not only JOIN Kunden2Berater.kunden_id with Kunden.kunden_id, but also Berater.name with Kunden.name.
Thus, I'd recommend to always use explicit ON statements.
2013-07-30 11:05:00 +02:00
Martin Thoma
2560f06f6b definition von strict 2013-07-28 16:13:27 +02:00
Martin Thoma
cb3f1a482f Mit Peter und Nilan nochmals korrekturgelesen. 2013-07-28 15:55:54 +02:00
Martin Thoma
fe6543ad0b db getext 2013-07-27 17:14:28 +02:00
Martin Thoma
a430494180 misc 2013-07-27 15:29:03 +02:00