relevanz ?

relevanz ?

am 05.07.2006 07:02:11 von NOSPAM_newsgroups

Hallo =


Ich grüble seit Tagen über folgendes 'Problem' nach
und bin dabei der Lösung nicht wirklich einen =

Schritt näher gekommen:

Gegeben z.B. 10 Spalten (x0 bis x9)
mit Werten 0 oder 1

Nun erfolgt eine Abfrage, wo die =

bestimmt wird, daß x2 + x5 + x8 + x9 den
Wert 1 haben müssen.

Zusätzlich sollen aber auch jene angezeigt
werden, wo nur einer (oder mehr) der Spalten =

den Wert 1 hat.

So bis hierher noch kein Problem, aber
wie Sortiere ich jetzt das Ergebnis, =

so daß jenen mit der größeren Übereinstimmung
vorne kommen?

Ach ja, das ganze, Anzahl der Spalten die
vorhanden sind und jene die Abgefragt werden
ist von Abfrage zu Abfrage unterschiedlich.
Also ist eine 'fixe' Lösung nicht zielführend.

Über Anregungen würde ich mich freuen.

Gruß n.Olivier
-- =

Nachbagauer Olivier, Technologiezentrum, D-83395 Freilassing =

www.nOlivier.com - www.Reedb.com - www.Immofinder.de

Re: relevanz ?

am 05.07.2006 07:53:44 von Dietmar

n.Olivier wrote:
> Hallo
>
> Ich grüble seit Tagen über folgendes 'Problem' nach
> und bin dabei der Lösung nicht wirklich einen
> Schritt näher gekommen:
>
> Gegeben z.B. 10 Spalten (x0 bis x9)
> mit Werten 0 oder 1
>
> Nun erfolgt eine Abfrage, wo die
> bestimmt wird, daß x2 + x5 + x8 + x9 den
> Wert 1 haben müssen.
>
> Zusätzlich sollen aber auch jene angezeigt
> werden, wo nur einer (oder mehr) der Spalten
> den Wert 1 hat.
>
> So bis hierher noch kein Problem, aber
> wie Sortiere ich jetzt das Ergebnis,
> so daß jenen mit der größeren Übereinstimmung
> vorne kommen?
>
> Ach ja, das ganze, Anzahl der Spalten die
> vorhanden sind und jene die Abgefragt werden
> ist von Abfrage zu Abfrage unterschiedlich.
> Also ist eine 'fixe' Lösung nicht zielführend.
>
> Über Anregungen würde ich mich freuen.
>
> Gruß n.Olivier
O.K., nur als Anregung:

Erinnere dich an deine Anfänge, als du versuchtest Hex<-> Dez
umzurechnen ...

man nehme das Bit mit der Wertigkeit mal, oder in deinem Falle mit einer
Wertzahl, die auf den Maxwert deiner Spalte repräsentiert.
z.B. {0,1} = 2^(Stelle-1)
{0,1,2,3} = 4^(Stelle-1)
{0,1,2,..9} = 10^(Stelle-1)

Und nach dem so berechneten Wert kannst du wieder super sortieren..

Bis denne

Re: relevanz ?

am 06.07.2006 12:00:02 von NOSPAM_newsgroups

Hi

Dietmar schrieb:
> =

> n.Olivier wrote:

[...]

> {0,1,2,3} =3D 4^(Stelle-1)
> {0,1,2,..9} =3D 10^(Stelle-1)
> =

> Und nach dem so berechneten Wert kannst du wieder super sortieren..

Vielleicht liegt's an der Hitze oder mein Hirn =

ist schon resistent auf diesem Gebiet -
Es hilft mir einfach nicht weiter :-(

Beispiele (einfache darstellung):
select ... where x1=3D0 OR 1, x2=3D0 OR 1 order by ..

select ... where x3=3D0 OR 1 order by ..

select ... where x2=3D0 OR 1, x4=3D0 OR 1, x5=3D0 OR 1 order by ..


gruß n.Olivier
-- =

Nachbagauer Olivier, Technologiezentrum, D-83395 Freilassing =

www.nOlivier.com - www.Reedb.com - www.Immofinder.de

Re: relevanz ?

am 06.07.2006 12:06:21 von Christian Kirsch

n.Olivier schrieb:
> Hi
>
> Dietmar schrieb:
>> n.Olivier wrote:
>
> [...]
>
>> {0,1,2,3} = 4^(Stelle-1)
>> {0,1,2,..9} = 10^(Stelle-1)
>>
>> Und nach dem so berechneten Wert kannst du wieder super sortieren..
>
> Vielleicht liegt's an der Hitze oder mein Hirn
> ist schon resistent auf diesem Gebiet -
> Es hilft mir einfach nicht weiter :-(
>
> Beispiele (einfache darstellung):
> select ... where x1=0 OR 1, x2=0 OR 1 order by ..
>
> select ... where x3=0 OR 1 order by ..
>
> select ... where x2=0 OR 1, x4=0 OR 1, x5=0 OR 1 order by ..
>

Das ist keine gültige SQL-Syntax. Merke: Alltagssprache ("Ist Erwin 1
oder 2") hilft nicht bei Programmiersprachen. Weshalb Du vermutlich
auch eine Fehlermeldung bei diesen Statements bekommst - ich tippe mal
auf "Syntaxerror" (BTW: Warum verschweigst Du das hier und hinterlässt
stattdessen ein komplett sinnfreies "hilft mir nicht weiter"?).

Bitte schau Dir mal die Syntax von WHERE-Klauseln an - die sieht
definitiv anders aus als (A = B ODER C) , (X = Y ODER Z). Jeder dieser
Klammerausdrücke *könnte* nämlich auch so interpretiert werden:
(A = B) ODER C
also: (Ist A dasselbe wie B) oder ist C wahr?
Die Trennung mehrerer logischer Ausdrücke schließlich ergibt in SQL
überhaupt keinen Sinn.

Ob dieses Chaos jetzt an deinem Hirn oder an der Hitze oder an dem
unglücklichen Auftreffen von letzterem auf ersteres liegt, wage ich
nicht zu beurteilen.

Re: relevanz ?

am 06.07.2006 17:56:20 von NOSPAM_newsgroups

Hi

Christian Kirsch schrieb:
> =

> n.Olivier schrieb:
> > Hi

> > ist schon resistent auf diesem Gebiet -
> > Es hilft mir einfach nicht weiter :-(
> >
> > Beispiele (einfache darstellung):
^^^^^^^^^^^^^^

[...]

> Das ist keine gültige SQL-Syntax. Merke: Alltagssprache ("Ist Erwin 1=


Ich leide wohl nicht als einziger :-)

gut, vielleicht währe ein + anstelle von , angebrachter gewesen.

gruß n.Olivier
-- =

Nachbagauer Olivier, Technologiezentrum, D-83395 Freilassing =

www.nOlivier.com - www.Reedb.com - www.Immofinder.de

Re: relevanz ?

am 07.07.2006 10:34:36 von Dietmar Staritz

n.Olivier wrote:
>>>Es hilft mir einfach nicht weiter :-(

Nehmen wir mal an, du hast als Bedingung: x2 x3 x5 x9
Wenn die Wertigkeit so aussehen soll:
oberste: alle die, die x2,3,5,9 erfüllen,
dann die mit 3 Treffern: x{2,3,5},x{3,5,9}...., aber die gleichwertig!!
dann die mit 2 Treffern ....

dann kannst du doch einfach in deinem Select noch hinzufügen:

.... x0 + x1+ x2 + ....x9 as MyOrder

und im Order by kommt dann:
MyOrder desc

hinten ran.

Gibt es innerhalb der Bedingungen noch Wertigkeiten, wie z.B. x2 ist
höher einzustufen als x3, demzufolge muss es vor den x3-Sätzen
erscheinen, solltest Du eine StoredProcedure/Function (geht wohl ab
mysql 4) bauen, in der du die Wertigkeit der Stellen übergibst und die
dir dann die MyOrder- Zahl ausgibt.

p.s. ein fertiges Statement kann ich Dir nicht basteln, da ich derzeit
nur Ora-DB im Zugriff habe und deren "Kompatibilität zum SQL-Standard"
ist oft genug erwähnt.

Dietmar

Re: relevanz ?

am 07.07.2006 12:41:06 von NOSPAM_newsgroups

Hi

Dietmar Staritz schrieb:
> =

> n.Olivier wrote:
> >>>Es hilft mir einfach nicht weiter :-(
> =

> Nehmen wir mal an, du hast als Bedingung: x2 x3 x5 x9

=

> dann kannst du doch einfach in deinem Select noch hinzufügen:
> =

> ... x0 + x1+ x2 + ....x9 as MyOrder

Genau das ist es. Bin zwar heute nacht selber auch noch
drauf gekommen, aber trotzdem danke.

Manchmal denkt man wirklich total verkehr =

obwohl es so einfach ist :-(

Echtes Beispiel aus der Lösung:
select ...

if(b=3D1 or bsize>0,1,0)
+if(t=3D1 or tsize>0,1,0)
+if(g=3D1 or gsize>0,1,0)
+if(s=3D1 or ssize>0,1,0)
+if(w>=3D and w<=3D,6,0)
+if(w>=3D and w<=3D,2,0)
+if(r>=3D and r<=3D,9,0)
+if(r>=3D and r<=3D,2,0)
as rel

from order by rel

Nochmals Danke

gruß n.Olivier
-- =

Nachbagauer Olivier, Technologiezentrum, D-83395 Freilassing =

www.nOlivier.com - www.Reedb.com - www.Immofinder.de