Vergleich mit anderer Tabelle

server

Erfahrenes Mitglied
Guten Morgen,

Ich möchte folgendes Problem lösen:

In einer MySQL-Tabelle stehen pro user 40 Werte. In einer anderen Tabelle stehen ebenfalls 40 Werte.

Es ist nur entscheident, ob er Wert >= 1 ist oder nicht.

Ziel des Scripts ist es, dass der User auf einen Button klickt und alle anderen User aus der zweiten Tabelle gesucht werden, bei denen mindestens ein Wert mit seinen übereinstimmt. Schön wäre es noch, wenn sie in absteigender Reihenfolge angezeigt würden.

Ich brauche das Ganze für ein Münztausch-Tool. Man stellt also ein, welche Euromünzen man hat und welche man sucht und klickt anschließend auf „Tauschpartner finden“. Dann sollen die möglichen Tauschpartner eben angezeigt werden. Wenn möglich startend mit demjenigen, bei dem die meisten Übereinstimmungen gefunden wuden.

In der ersten Liste stehen also die Münzen, die die User suchen, in der zweiten Liste. Jene Münzen, die die User zum Tausch anbieten ...

Vielleicht kann mir jemand helfen bzw. einen Tipp geben, wie ich das am besten umsetzen kann.

Vielen Dank,

Grüße,
Hermann
 
Ich würde das Ganze wahrscheinlich mit einer einzigen Tabelle realisieren. In der stehen die Münzen zusammen mit einem Attribut, das angibt, ob man die Münze selbst besitzt oder ob man sie sucht. Desweiteren könnte ein weiteres Attribut angeben, ob man weitere Münzen übrig hat und sie zum Tausch anbietet.

Wende dich übrigens das nächste Mal mit einem datenbankbezogenen Anliegen an das Datenbank-Forum. Dort wäre es besser aufgehoben.
 
Ok,

Also ich muss dann wohl das ganze etwas genauer erklären...es sind nur 40 Münzen im Jahr 99. Bis 2002 ist die Anzahl der Münzen pro Jahr gestiegen. Insgesamt werden 896 verschiedene Münzen in 14 Tabellen verwaltet.

Und alle 896 Münzen mal zwei, also 1792 werte pro User in eine Tabelle ist nicht so praktisch.....

Aber ich habe mal überlegt, die Abfrage so ähnlich wie eine Suchfunktion in Foren zu gestallten.....
 
Deshalb sollte es eine Tabelle geben, in der alle möglichen Münzen notiert sind, und eine weitere, die nur die vorhandenen Münzen den Benutzern zuordnet. Beispielschema:
Code:
ID	Name	Wert	Währung Jahr
========================================
1	foo	1	Euro	1999
2	bar	2	Euro	2000
…
Code:
ID	BenutzerID	MünzeID
================================
1	1		1
2	1		2
3	2		2
4	3		1
…
 
Bei wenigen Usern scheint mir das ganz vernünftig.....

Aber in der zweiten Tabelle brauche ich dann pro User und gesuchter Münze eine Spalte. Und sollte jemand absoluter Anfänger sein und alle Münzen suchen, sind das alleine bei einem User 896 Münzen.

Ausserdem brauche ich auch mindestens 3 Tabellen. Wenn ich die Tabellen aber nach Jahren aufspalte kann ich auch Blockweise suchen und muss nicht die anderen Tabellen durchkämen.

Im Endeffekt ist es meiner Ansicht nach egal, ob ich 3 Tabellen mache mit sehr vielen Inhalten oder mehrere Tabellen mit weniger Inhalten.

Ausserdem ist es für den User einfacher, wenn jede Münze in der Tabelle existiert, egal ob er sie such (1) oder nicht (0). Ansonsten muss er jedes Mal eine neue ID anlegen und die Münze in die DB schreiben, wenn er sie dann hat wieder löschen und dadurch entseht wieder eine Lücke.

Andererseits sind es bei deiner Variante insgesamt wohl weniger Einträge, da ja nur die Werte, die zutreffen, also gesuchte Münzen, gespeichert werden und alles was 0 ist nicht.
 
Lücken in der Reihenfolge des künstlichen Primärschlüssels sind rein technisch gesehen kein Problem – oder bist du so ein Schönheitsfanatiker?
 
Ich würde wahrscheinlich drei Tabellen verwenden: eine Tabelle für die Münzen selbst (siehe oben) und dessen Eigenschaften; eine für die „Benutzer besitzt x Exemplare der Münze foo und bietet davon y zum Tausch an“-Beziehung; und eine für die „Benutzer sucht z Exemplare der Münze bar“-Beziehung.
 
Zurück