Mit der Abfrage möchte ich alle Ids ehralten, die sowohl unter "value1=10 AND (value2=11 or value2=12)" existieren aber auch gleichzeitig unter "value1=15" existieren. Eine Id soll also nur ausgewählt werden, wenn beide Abfragen richtig sind.
Also würde man sie so verknüpfen:
PHP Code:
value1=10 AND (value2=11 or value2=12) AND value1=15
Das liefert jedoch immer ein leeres Resultat zurück, da ich ja sage "Wähle diejenigen Datensätze aus, die sowohl value1=10 haben und value1=15".
Ich brauche aber viel mehr das:
"Wähle diejenigen Datensätze aus, die sowohl in der Datenbank mit dem Wert value1=10 existieren und mit dem Wert value1=15 und die gleichzeitig noch dieselbe ID haben".
In meinem Beispiel sollen also nur folgende Werte ausgewählt werden:
Code:
id value1 value2
0 15 20
0 10 11
Kriegt man die obere Abfrage ohne Unterabfrage hin?
Das sind nun 2 unterschiedliche Querys. Einmal value1=10 und value1=15 die gleiche ID haben und die obrige, welche von beiden ists denn nun genau und vorallem, was spricht gegen einen Subquery?
Das sind nun 2 unterschiedliche Querys. Einmal value1=10 und value1=15 die gleiche ID haben und die obrige, welche von beiden ists denn nun genau und vorallem, was spricht gegen einen Subquery?
Ich muss wenn ich diese Methode benutze bis zu 10 Subquerries machen und das zieht Performance wie sonst was. Jede Query die ich spare dürfte Zeit sparen. Ich würde auch gerne Zeiten vergleichen aber mir fällt nicht wirklich mehr ein als die obere Lösung.
Bei der Performance reden wir von "Millisekunden". Ansonsten ggf. weitere Ergebnisse vorher bereits auswerten? Bzw. eine größere Anzahl, zwischenspeichern, etc.
Bei der Performance reden wir von "Millisekunden". Ansonsten ggf. weitere Ergebnisse vorher bereits auswerten? Bzw. eine größere Anzahl, zwischenspeichern, etc.
Jedes Request muss ich aber ca 10x ausführen und sind als Antwort eines Ajax-Requests gedacht. Plus Dns-LookUp, Html und Paar Php-Code braucht das Ganze trotzdem 2sec und da sind selbst 10msec pro Query in der Summe 100msec und das merkt man schon, daher bin ich für jegliche SQL bezogene Optimierungen dankbar.
propire es mal so der Query ist kürzer und übersichtlicher und macht genau das gleich
PHP Code:
SELECT t1.value1, t1.value2, t2.value1 AS value3, t2.value2 AS value4 FROM items t1 LEFT JOIN items t2 ON t2.value1 = 15 WHERE t1.value1 = 10 AND t1.value2 IN(11,12);
propire es mal so der Query ist kürzer und übersichtlicher und macht genau das gleich
PHP Code:
SELECT t1.value1, t1.value2, t2.value1 AS value3, t2.value2 AS value4 FROM items t1 LEFT JOIN items t2 ON t2.value1 = 15 WHERE t1.value1 = 10 AND t1.value2 IN(11,12);
Danke dir schonmal, ist aber leider langsamer. :/
Quote:
Originally Posted by flogi333
Ich habs noch nicht verstanden...
Also:
- value1 muss 10 oder 15 sein
- UND value2 muss 11 oder 12 sein
Bin ich da richtig?
BTW:
Das kann nichts zurückgeben, da value1 nicht 10 UND 15 gleichzeitig sein kann
Sowie wenn du fragen würdest:
if( i == 0 && i == 1)
Nein value1 muss 10 und 15 sein, wenn die item_id dieselbe ist.
Also bei ein und demselben item muss sowohl ein Eintrag value1=10 als auch ein Eintrag value1=15 existieren.
das Ware mir aber neu das 'LEFT, JOIN' langsamer ist in gegen teil sie sind sogar aus per Formens grünten bestens geeignet um die anfragen zu buddeln.
ich wurde male dein php Code anschauen ob Mann ihn eventuell optimieren kann.
Stimmt, war mein Fehler, ich hatte vergessen, dass mein Server immer SQL-Abfragen cached und meine SQL-Abfragen mit Subquerries waren bereits gecached, deswegen ging das extrem schnell. Jetzt wo der Cache ausgeschalten ist habe ich folgendes Ergebnis:
Quote:
10000 Abfragen mit Subquerries:
29sec
10000 Abfragen mit Left Join:
16sec
Danke dir, das ist genau der Geschwindigkeitsschub den ich brauchte.
Damit wäre die Frage für mich gelöst. Danke nochmals an alle Helfer.
Sorry dass das ganze etwas spät kommt, aber mit der oben genannten Formel hättest du 0 -15 - 20 gar nicht rausbekommen dürfen was du als Beispiel gegeben hast.
Weiß nicht wieviele Einträge das sind, dass ganze sollte aber auch (wenn ich die Beschreibung soweit richtig mitgekriegt hab) ohne extra Join gehen...
PHP Code:
SELECT * FROM `items` WHERE value1 IN(10,15) AND value2 IN(11,12)
AFK Abfrage ? 09/05/2012 - Guild Wars 2 - 4 Replies Servus, habe grad bissel an meinem eigenen Bot rumgeschraut der nu auch laufen kann und auch das ein oder andere Event erledigt. So nun lasse ich ihn die dritte Testrunde laufen und bekomm aufeinmal ein Fenster (wie die normalen fenster wenn man mit einem NPC spricht) und dort steht " Wer ist der Moa wer ist der Mann ?" und als antwort möglichkeiten gabs Rechts , Links und in der Mitte. Dazu läuft eine art Counter runter. Ich hab aus Schock erstmal irgendwo draufgekickt. Ne minute später kam...
bot abfrage 04/08/2011 - Ragnarok Online - 4 Replies hallo ich habe beim server wo ich bin wenn man da in iein dun is eine botabfrage dann kommt ein bild man muss die zahl eingeben und dann kann man weiter machen wenn ich es aber mit openkore machen wie soll das gehen
danke für die hilfe
Abfrage in dec? 12/02/2010 - General Coding - 7 Replies Hallo Leute,
ich habe mir hier schnell ein kleines Programm zum üben geschrieben und hab nun eine Frage.
Der Code sieht so aus:
/*
Autor: ******
E-mail: ******
Datum: 28.11.2010
Programm: Check if letter is uppercase or not
If abfrage 12/29/2009 - AutoIt - 8 Replies Hallo leute.
Wollt ma fragen ob mir jemand sagen könnte wie ich abfragen kan ob in einer input box z.b steht xD und dan in der if abfrage so abfragen könnte wen dort xD steht das er z.b das script schliest weis das einer?