Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Juli

SELFHTML Forumsarchiv
Alle Datensätze mit einem Wert vergleichen

Informationsseite
  1. Seite (DATENBANK) Alle Datensätze mit einem Wert vergleichen von Gero, 30. 07. 2005, 14:18
nach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Gero, 30. 07. 2005, 14:18

Hallo,

ich habe eine relativ große MySQL-Datenbank. Nun stellt sich für mich folgendes Problem, das ich versuche, hier so genau wie möglich zu beschreiben:

Also, es werden zwei Parameter in einem Array an die Seite übergeben, z.B. so:

Array
(
 ['x'] => "15"
 ['y'] => "19"
)

Dann müssen diese beiden Werte jeweils mit allen Werten in der Datenbank verglichen werden. D.h. es muss erst durch eine Rechnung ein temporärer Wert für jeden Eintrag geschaffen werden! Und darin sehe ich das Problem:

Ein Wert in der Datenbank hat jetzt also z.B. als "x" den Wert 20, und "y" 30. Dann soll dieser wiederum mit den übergebenen Werten (s.o.) verglichen werden und wenn der Vergleich erfolgreich ist (z.B. Differenz kleiner als 5), dann soll er aus der DB selektiert werden.

Mein Problem ist also, dass ich quasi bei allen Werten in der Datenbank einen Differenzwert ausrechnen muss. Geht das überhaupt mit MySQL-Mitteln?

Danke, vielleicht habe ich auch ein großes schwarzes Brett vor dem Kopf.

 Grüße
   Gero

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Ilja, 30. 07. 2005, 14:44

yo,

»» Dann müssen diese beiden Werte jeweils mit allen Werten in der Datenbank verglichen werden. D.h. es muss erst durch eine Rechnung ein temporärer Wert für jeden Eintrag geschaffen werden! Und darin sehe ich das Problem

das ist kein problem, mysql und andere dbms können sehr wohl berechnungen durchführen. diesen berechneten wert kann man dann einen namen geben, den man weiter verwenden kann. ich will mal dazu ein beispiel angeben, wobei mir noch nicht gan klar ist, welche datensätze du selektieren willst. aber ich versuch es mal, wobei $x und $y die übergebenen werte sind.

SELECT x, y, abs(x - $x) AS temp1, abs(y - $y) AS temp2
FROM tabelle
WHERE temp1 <= 5 AND temp2 <= 5

Ilja

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Lachgas, 30. 07. 2005, 15:04

Hallo Ilja!

»» SELECT x, y, abs(x - $x) AS temp1, abs(y - $y) AS temp2
»» FROM tabelle
»» WHERE temp1 <= 5 AND temp2 <= 5

Nö, Aliasnamen dürfen nur in ORDER BY und GROUP BY weiterverwendet
werden. Oder irre ich mich?

℆, ℒacℎgas
--
Bei der intendierten Realisierung der linguistischen Simplifizierung
des regionalen Idioms resultiert die Evidenz der Opportunität extrem
apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
milierter Xenologien konsequent zu eliminieren!

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Ludger, 30. 07. 2005, 15:17

Hi,

»» Oder irre ich mich?

moeglicherweise. Aber machts den Braten fett?

Gruss,
Ludger

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Lachgas, 30. 07. 2005, 15:18

Hallo Ludger!

»» moeglicherweise. Aber machts den Braten fett?

Nein, aber dann funktionierte das Beispiel von Ilja nicht.

℆, ℒacℎgas
--
Bei der intendierten Realisierung der linguistischen Simplifizierung
des regionalen Idioms resultiert die Evidenz der Opportunität extrem
apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
milierter Xenologien konsequent zu eliminieren!

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Ludger, 30. 07. 2005, 15:20

Hi,

»» »» moeglicherweise. Aber machts den Braten fett?
»»
»» Nein, aber dann funktionierte das Beispiel von Ilja nicht.

wuerde dann aber ohne Aliase wiederum funktionieren.

Gruss,
Ludger

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Ilja, 30. 07. 2005, 16:54

yo,

»» Nö, Aliasnamen dürfen nur in ORDER BY und GROUP BY weiterverwendet
»» werden. Oder irre ich mich?

das ist ein guter hinweis, den ich übersehen habe. aber man kann das sicherlich beheben, indem man dann anstelle des alias-namen eben die ganze berechung in die where klausel mit rein nimmt.

SELECT x, y, abs(x - $x) AS temp1, abs(y - $y) AS temp2
FROM tabelle
WHERE abs(x - $x) <= 5 AND abs(y - $y) <= 5

Ilja

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: fastix®, 30. 07. 2005, 14:45

Moin!

»» Ein Wert in der Datenbank hat jetzt also z.B. als "x" den Wert 20, und "y" 30. Dann soll dieser wiederum mit den übergebenen Werten (s.o.) verglichen werden und wenn der Vergleich erfolgreich ist (z.B. Differenz kleiner als 5), dann soll er aus der DB selektiert werden.

ich nehme mal an, Du machst es von PHP aus.

Wieso sollte ein:


<?php

$sql="SELECT spalte, spalte1
FROM table
WHERE
(spalte_x - ".$array['x'].") < 5
AND
(spalte_y - ".$array['y'].") < 5";

?>

es nicht tun?




MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 30. 07. 2005, 14:49

Hallo Gero

»» ich habe eine relativ große MySQL-Datenbank. Nun stellt sich für mich folgendes Problem, das ich versuche, hier so genau wie möglich zu beschreiben:

leider warst Du dabei nicht erfolgreich. Ich habe Dich nicht verstanden.

»» Also, es werden zwei Parameter in einem Array an die Seite übergeben, z.B. so:

  x = "15"
  y = "19"

Vergiß Arrays, hier haben wir ganz einfach zwei Werte. Ob diese in Deiner Anwendung sich in einem Array befinden, dürfte dem SQL-Statement egal sein.


»» Dann müssen diese beiden Werte jeweils mit allen Werten in der Datenbank verglichen werden. D.h. es muss erst durch eine Rechnung ein temporärer Wert für jeden Eintrag geschaffen werden! Und darin sehe ich das Problem:

Du siehst ein Problem, erklärst es aber nicht.
Hier ist der genaue Algorithmus zur Bestimmung des Ergebnisses erforderlich

Ich vermute nun, dass es zwei Spalten gibt, nennen wir sie

   A und B

deren Werte mit den Werten von x und y verglichen werden müssen.

»» Ein Wert in der Datenbank hat jetzt also z.B. als "x" den Wert 20, und "y" 30. Dann soll dieser wiederum mit den übergebenen Werten (s.o.) verglichen werden und wenn der Vergleich erfolgreich ist (z.B. Differenz kleiner als 5), dann soll er aus der DB selektiert werden.

Wie bitte berechnet sich diese "Differenz"? Ist das (A - x) + (B - y)? Ist es die Summe der Beträge der Abweichungen? Ist es etwas ganz anderes?

»» Mein Problem ist also, dass ich quasi bei allen Werten in der Datenbank einen Differenzwert ausrechnen muss. Geht das überhaupt mit MySQL-Mitteln?

Die Wahrscheinlichkeit ist sehr hoch, dass man Deine Problematik mit einem SQL-Statement lösen kann. Du musst uns nur Deine Problematik _genau_ schildern.

Am besten mit einem realen Beispiel, mit den richtigen Spaltennamen, mit richtigen Datensätzen und richtigen Werten für x und y.


Freundliche Grüße

Vinzenz

nach obennach unten

Alle Datensätze mit einem Wert vergleichen

Die folgende Nachricht zum Thema stammt von: Gero, 30. 07. 2005, 14:59

Hallo,
danke euch allen, ich habe das Problem aber schon anders gelöst: Der Fehler lag darin, dass ein Teil zuviel von PHP übernommen wurde. Ich habe jetzt alles in MySQL gelöst und es funktioniert!

Danke

Gruß
 Gero

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Juli

© 1998-2006 Seite Impressum, Software: Classic Forum