Genau EINE Kombination ermitteln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Genau EINE Kombination ermitteln

    [COLOR=red]*erledigt*[/COLOR]

    Hallo.

    Angenommen, ich habe Bauholzbalken in meiner Datenbank, die zusammen eine Hütte ergeben.

    Beispiel:

    1xBalken A + 1xBalken B + 1xBalken C = Hütte 1
    1xBalken B + 1xBalken C + 1xBalken D = Hütte 2
    usw.

    Ziel ist es nun, anhand der eingegebenen Balken und deren Anzahl die Hütte zu ermitteln.

    Das Problem: Die Kombinationen von Anzahl+Balken müssen nicht unbedingt eindeutig sein, wenn ggf. noch ein Balken dazukommt.

    Beispiel:
    1xBalken C + 1xBalken D = Hütte 4
    1xBalken C + 1xBalken D + 1xBalken E = Hütte 5
    1xBalken C + 1xBalken D + 1xBalken F = Hütte 6

    Wählt der Benutzer Balken C und Balken D, weiß ich nicht, ob er nun fertig ist und "Hütte 4" meint oder ob er noch Balken E bzw. F auswählen möchte, um Hütte 5 bzw. Hütte 6 zu bestellen.

    Wie finde ich über einen SQL heraus, ob es für die gewählten Balken GENAU EINE Lösung gibt?

    Die Tabelle für die Balken-Anzahl-Hütten-Relation sieht so aus:

    id -> lfd. ID
    balken_id -> ID des Balken
    count -> Anzahl des Balken
    huetten_id -> ID der Huette

    Bei "Hütte 4" wäre das also beispielsweise

    id 1
    balken_id 3 (fuer "C")
    count 1
    huetten_id 4 (fuer Huette 4)

    id 2
    balken_id 4 (fuer "D")
    count 1
    huetten_id 4 (fuer Huette 4)

    Ich hab's mit DISTINCT und COUNT in mehreren Varianten probiert, aber entweder zählt er mir zuwenig oder zuviel...!

    Ich hoffe, ich habe das Problem deutlich genug geschildert.

    Danke im Voraus für Ideen.

    cya

    P.S.:
    Diese genannte Tabelle ist vorgegeben und kann nicht geändert werden! Ich muss damit "leben".
    Zuletzt geändert von sallow2001; 17.03.2011, 15:46. Grund: Problem gelöst

  • #2
    Das sieht wie eine klassische N:M Relation aus....
    JOIN müsste dich glücklich machen.
    A Visual Explanation of SQL Joins
    SQL und relationale Algebra
    Die 5 Normal Formen
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo,

      das könnte ein recht komplexer Join werden und ist evtl. in PHP einfacher zu lösen. Alleine mit count() und distinct kann ich es mir nicht vorstellen. Da werden wohl mindestens zwei Self Joins gebraucht, eventuell sogar soviele Joins wie der Kunde bereits Balken gewählt hat, also eine dynamisch erzeugt Abfrage.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Mit PHP wäre es kein Problem, aber eben unelegant, dachte ich. Deshalb wollte ich vorher nachfragen, ob's an mir liegt, dass ich's mit SQL nicht kann oder ob es wirklich kompliziert(er) ist.

        Kommentar

        Lädt...
        X