TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen
Registrieren Hilfe Community Downloads

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23.12.2007, 10:45   #1 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 

Registriert seit: 02.02.2002
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.

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
Beiträge: 14.561

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
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
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
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)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht 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 aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Regiert von Laien - ZensUrsula hat zugeschlagen io.sys Politik & Gesellschaft 60 14.01.2010 21:58
MySQL wie funktionierts?! LeoHart Programmiersprachen 5 04.07.2005 15:34
MySQL - Suchzeitausgabe ?! predi Programmiersprachen 1 14.06.2005 11:58
AMD CPU Identifizieren Stöhnie Tutorials 0 27.03.2004 15:06
Gutes Newsystem mit MySQL ?! webAndy Programmiersprachen 0 20.04.2003 09:56


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved