TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
Alt 23.12.2007, 10:45   #1 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 
Registriert seit: 02.02.2002
Ort: Jena
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Hallo,

ich habe eine MySQL-Abfrage, in der drei WHERE-Klauseln eingebaut sind. Ich würde nun gerne als erstes die Ergebnisse ausgeben, die durch die erste WHERE-Klausel erfüllt wurde, dann die zweite und dann die Dritte. Also sprich:

SELECT * FROM t1
WHERE ( t1.c2 = 1 ) OR ( t1.c3 = 'test' ) OR ( t1.c2 = 2 )

Und die Ergebnisse sollen dann so ausgegeben werden:
1. c2 = 1
2. c2 = 1
3. c3 = 'test'
4. c3 = 'test'
5. c2 = 2

Irgendwelche Ideen, wie man so etwas umsetzen kann?

PS: Achso gibt es ferner eine Möglichkeit, weitere Attribute an das Ergebnis anzuhängen, um diese später nutzen zu können. Ich möchte nachher die Ergebnisse mit "c2 = 1" bei der Ausgabe kennzeichnen.
Fabian
News-Redakteur
[TweakPC Team]

"Only wimps use tape backup: _real_ men just upload their important stuff
on ftp, and let the rest of the world mirror it" (Zitat Linus Torvalds)

Geändert von Fabian (23.12.2007 um 11:01 Uhr)
Fabian ist offline   Mit Zitat antworten
Alt 23.12.2007, 12:41   #2 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 
Registriert seit: 29.10.2003
Ort: Double-U-UpperValley
Beiträge: 14.522

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Gibts dafür nicht den Group-By Clause? GGf mit Subselect im Group-by
tele ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
Fabian (24.12.2007)
Alt 23.12.2007, 15:05   #3 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 
Registriert seit: 02.02.2002
Ort: Jena
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Mit GROUP BY könnte ich nur die Ergebnisse nachher zusammen fassen, oder?

Ich möchte aber wissen, welche WHERE-Klausel, dazu geführt hat, dass die entsprechende Zeile im Ergebnis auftaucht.

PS: Ne ich glaube ich habe da nichts gefunden ... aber vielleicht hast du ja auch noch einen konkreten Tip.

Geändert von Fabian (23.12.2007 um 15:20 Uhr)
Fabian ist offline   Mit Zitat antworten
Alt 23.12.2007, 23:22   #4 (permalink)
Overclocker
 
Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Du könntest ein UNION versuchen:
Code:
SELECT * FROM t1
WHERE ( t1.c2 = 1 ) 
union
select * from t1
where ( t1.c3 = 'test' ) 
union 
select * from t1
where ( t1.c2 = 2 )
Oder alternativ ein order by:
Code:
SELECT * FROM t1
WHERE ( t1.c2 = 1 ) OR ( t1.c3 = 'test' ) OR ( t1.c2 = 2 )
order by 
   case when ( t1.c2 = 1 ) then 1 
   when ( t1.c3 = 'test' ) then 2
   when ( t1.c2 = 2 ) then 3
   else 4
   end
BenniG. ist offline   Mit Zitat antworten
2 Benutzer bedanken sich für den Beitrag:
Fabian (24.12.2007), tele (24.12.2007)
Alt 24.12.2007, 08:35   #5 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 
Registriert seit: 02.02.2002
Ort: Jena
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Vielen vielen Dank!

Genau soetwas habe ich gesucht. Welcher der beiden Ansätze wird denn vermutlich schneller sein?
Fabian ist offline   Mit Zitat antworten
Alt 24.12.2007, 10:22   #6 (permalink)
Overclocker
 
Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Ich würde vermuten, dass das UNION schneller ist.
OR-Verknüpfungen sind meist sowieso schon langsamer und eine Sortierung nach einer berechneten "Spalte" kostet nochmal Zeit..

Wenn es um eine zeitkritische Abfrage geht, würde ich mir die Mühe machen und eine große Testtabelle erzeugen.. Sowas >1Mio Datensätze kann MySQL schon ordentlich zum Schwitzen bringen

Manchmal kommen bei "zu wenigen" Datensätzen auch unzuverlässige Ergebnisse, also dann scheint es so, als wäre die eine Abfrage schneller, bei vielen Datensätzen ist diese Abfrage aber dann gähnend langsam.
BenniG. ist offline   Mit Zitat antworten
Alt 24.12.2007, 13:08   #7 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 
Registriert seit: 02.02.2002
Ort: Jena
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Hoi ...
wie kann ich denn jetzt doppelte Einträge herausfiltern. Benötige ich dafür wirklich ein Subquery, sprich eine verschachtelte Anfrage.

Was genau meinst du mit einer Testtabelle. Einfach nur mal ausprobieren, was schneller geht, oder wie?
Fabian ist offline   Mit Zitat antworten
Alt 24.12.2007, 13:26   #8 (permalink)
Overclocker
 
Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: MySQL: Identifizieren, welche WHERE-Klausel zugeschlagen hat

Zitat:
Was genau meinst du mit einer Testtabelle. Einfach nur mal ausprobieren, was schneller geht, oder wie?
Genau.. Einfach mal ausprobieren und deine Tabelle vorher gut mit Datensätzen füllen..

Zitat:
wie kann ich denn jetzt doppelte Einträge herausfiltern. Benötige ich dafür wirklich ein Subquery, sprich eine verschachtelte Anfrage.
Also normalerweise sollten keine doppelten Einträge vorkommen. Oder hat deine Tabelle sowieso schon doppelte Einträge?
Ein UNION soll laut Manual automatisch ein UNION DISTINCT sein, d.h. Datensätze, auf die zwei Bedingungen zutreffen werden nur einmal angezeigt.
BenniG. ist offline   Mit Zitat antworten
Antwort

Stichworte
identifizieren, mysql, whereklausel, zugeschlagen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir erlaubt, neue Themen zu verfassen.
Es ist dir erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Crossfire identifizieren Koopsta ATI Grafikkarten 10 16.04.2007 15:21
Welche Sys. anforderungen hat WinMCE2005 nonoe Windows & Programme 1 06.03.2007 07:00
Unbekannte MiniPCI-Express Karte identifizieren Live Sonstige Hardware 4 14.12.2006 10:37
AMD CPU Identifizieren Stöhnie Tutorials 0 27.03.2004 15:06
Welche Farbe hat eurer XP? Gast AMD: CPUs und Mainboards 15 22.11.2002 13:25


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.




Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum - Hardware-Links - Partner
Copyright © 1999-2013 TweakPC, Alle Rechte vorbehalten, all rights reserved