| | | | |
| |||||||
| Datenbanken SQL und Co |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | hm - ich dachte, genau die Antwort auf deine ersten Fragen stehe schon im Text... speziell 3) -> es wird zuerst ein Ticket-Eintrag geschrieben. Der korrespondiert mit EINEM ticketverlauf Eintrag . Wenn dann ein User das Ticket bearbeitet, wird ein 2ter ticketverlauf-Eintrag erstellt (und bei mindestens einem Ticket"Grund" können es auch viel mehr Nachrichten sein, die im Ticketverlauf quasi hin und her gesendet werden. An jedem Ticketverlauf-Eintrag steht im Feld flag, für welche User-Klasse es bestimmt ist - ich möchte aber nur die Tickets haben, die für die Abfragende User(Klasse) jetzt anstehen. Ohne das order by dort, nimmt die Datenbank den zuerst gefunden ticketverlauf-Eintrag, der zum Ticket passt. Ich seh aber erst am allerletzten Eintrag, ob das Ticket für den abfragenden User(-Klasse) bestimmt ist, oder nicht ... das group by ist aus dem gleichen Grund da, ich brauch jedes Ticket nur einmal .... ok, danke jens - mit deinen Hinweisen scheint es mir gelungen zu sein, die Abfrage entsprechend zu vereinfachen aber ich probier mal kurz was aus und melde mich dann nochmal
__________________ "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste Geändert von eagle275 (18.10.2011 um 12:19 Uhr). |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Okay - das heißt also, in MySQL missbrauchst Du das kapputte Group by. MySQL ignoriert die Notwendigkeit der funktionalen Abhängigkeit und gibt einfach den erstbesten Wert aus. Um den erstbesten Wert auch zu kriegen, verwendest Du ein Group by. Das das funktioniert ist mehr Zufall, als alles andere. Was Du versuchen solltest ist, nur den letzten Verlaufsstatus des Tickets zu betrachten. Das kannst Du auf zwei Arten erreichen: Code: SELECT
v1.whatever
FROM
ticketverlauf v1
LEFT JOIN ticketverlauf v2
ON v1.ticket_id=v2.ticket_id
AND v2.zeitpunkt>v1.zeitpunkt
WHERE
v2.id IS NULL
Code: SELECT
v1.whatever
FROM
ticketverlauf v1
INNER JOIN (SELECT vi.ticket_id, MAX(vi.zeitpunkt) AS dt FROM ticketverlauf vi GROUP BY vi.ticket_id) v2
ON v1.ticket_id=v2.ticket_id
AND v1.zeitpunkt=v2.dt
Gruß Jens |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | ja, habe das jetzt ausgehend von der ticket tabelle gelöst .... und der einfache Join läuft natürlich noch schneller, als der subselect vorher
__________________ "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | Code: SELECT *,tickets.id as ticketnummer, tickets.ticket_id as thema FROM tickets LEFT JOIN ticketverlauf ON tickets.id=ticketverlauf.ticket_id WHERE erledigt='nein' AND ( flag=1 OR flag=28 or flag=2 ) AND 1=1 ORDER By tickets.id ASC, ticketverlauf.id DESC
__________________ "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | nicht zwingend .... anfangs wird zu jedem ticket genau 1 verlaufs-Eintrag erzeugt. wenn der nun bearbeitet wird, dann kommt ein Verlaufseintrag hinzu
__________________ "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Und genau das ist das Problem bei Deiner Query. Nimm an, Deine Niederlassung ist für den ersten Verlaufsstatus zuständig, nicht aber für den zweiten. Deine Query würde in diesem Fall den ersten zurück geben und den zweiten unterschlagen. Gruß Jens |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] PHP keine Verbindung zu MSSQL Server 2008 | TheSpion | PHP Einsteiger | 13 | 29.09.2011 08:44 |
| [Erledigt] MySQL Select ORDER BY - Inhalt einer Spalte höher bewerten | Mert | Datenbanken | 10 | 03.03.2011 14:29 |
| mssql: unable to connect to server | 2wuck | Datenbanken | 2 | 26.02.2011 20:51 |
| Root Server Email | The Punisher | Server, Hosting und Workstations | 15 | 30.11.2010 21:02 |
| VisualSVN Server und PHP5 | Frederic_S | Server, Hosting und Workstations | 12 | 18.11.2010 17:50 |
| Komme nicht zu MSSQL Server | Hehenberger | PHP Tipps 2010 | 6 | 04.11.2010 14:41 |
| [Erledigt] phpMailer PHP4: SMTP Fehlermeldung | explode | PHP Tipps 2010 | 0 | 21.07.2010 12:58 |
| Apache2.2 & PHP5 mit MSSQL Extension Fehler | AwaKe | Server, Hosting und Workstations | 4 | 14.07.2010 14:36 |
| [Erledigt] Intertabellarische Berechnungen, wie? | dave303 | Datenbanken | 13 | 05.03.2010 11:58 |
| Ausgabe erfolgt nicht | Extremefall | PHP Tipps 2009 | 17 | 17.12.2009 19:51 |
| Suche Tipps für Persormance-Steigerung (Geld für Nützliches) | Beitragsarchiv | 18 | 16.08.2005 10:57 | |
| [Erledigt] Between-Query an MSSQL 2000 Server | PHP-Fortgeschrittene | 0 | 30.06.2005 08:50 | |
| Fehlermeldung auf Server | Datenbanken | 4 | 28.02.2005 12:00 | |
| MSSQL Server und PHP | PHP-Fortgeschrittene | 8 | 08.12.2004 10:57 | |
| [Erledigt] PHP und MSSQL Server | PHP Tipps 2004 | 5 | 04.06.2004 18:03 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| mssql subselect, php mssql select where, ms sql server subselect, ms sql sub select, order by im sub-selectt, ms sql subselect views bug, ms sql select from subselect, mysql sortierung anhand subselect, \order by select\ mssql, ms-sql subselect mit in abfrage, mysql order by select, funktionale abhängigkeit group by, order by order of subquery, ms sql server top sub select, was ist bie mssql server, subselect mssql, mssql subselect fehler finden, mssql select order by select, ms sql order by in subquery, ms sql sub select mehrere felder |