Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank durchsuchen

Einklappen

Neue Werbung 2019

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

  • Datenbank durchsuchen

    Hey,
    ich habe folgendes Problem. Ich moechte meine datenbank nach Zutaten durchsuchen und ich habe 20 Spalten fuer Zutaten. Nun meine Frage; Wie kann ich diese 20 Spalten durchsuchen?
    Ich moechte ungern alle moeglichen Varianten aufschreiben muessen. Also z.B. ist 'Ei' jetzt in Spalte 1 oder 2 oder 3.... .Der Input kann bis zu 20 Zutaten sein und ich moechte die ID von dem mit den meisten Zutaten uebereinstimmungen.

    MfG Stan

  • #2
    Zitat von stan Beitrag anzeigen
    Hey,
    ich habe folgendes Problem. Ich moechte meine datenbank nach Zutaten durchsuchen und ich habe 20 Spalten fuer Zutaten. Nun meine Frage; Wie kann ich diese 20 Spalten durchsuchen?
    In dem du die Datenbank normalisierst. Das heisst, das die Zutaten in eine extra Tabelle gehören und mit einer Id und einem index versehen sind.

    Kommentar


    • #3
      Zitat von stan Beitrag anzeigen
      ich habe 20 Spalten fuer Zutaten. Nun meine Frage;
      MfG Stan

      Die nächste Frage bei deinem kapotten Design wird sein: ich habe ein Rezept mit 21 Zutaten. Mach also das Design ganz.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Falls du dir damit leichter tust - siehe auch diese beiden Tutorials:

        http://www.peterkropff.de/site/mysql/normalisierung.htm

        http://www.sqldocu.com/nine/normalform1.htm
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Also wenn ich das in eine andere Tabelle schreib, dann habe ich das Problem doch nur verschoben oder nicht ?
          Ich habe dann eine Tabelle mit dem Namen des Rezepts und eine mit den Zutaten, aber ich muss ja dann trotzdem alle moeglichen Varianten durchprobieren oder ?

          ID | Rezeptname | Zutat1 | Zutat2 ...
          wird zu

          ID | Zutat1 | Zutat2 ...

          Danke schonmal

          Kommentar


          • #6
            Nein.. Sobald du Spalten nummerieren musst, kannst du i.d.R. davon ausgehen das es nicht mehr korrekt ist. Schau dir die Links oben nochmals genau an.

            Schau auch im Web, sowas wurde schon sicherlich sehr oft gefragt, durchdacht und umgesetzt.

            Spontan wird es wohl sowas in der Art sein:

            Code:
            zutaten
            
            id | name
            1 Salz
            2 Pfeffer
            3 Ente TK
            ...
            
            
            einheiten
            
            id | name
            1 prise
            2 gramm
            3 EL
            4 TL
            ...
            
            
            rezepte
            
            id | name | beschreibung
            1 Gebratene Ente | Hier noch bla bla bla wegen Zubereitung, was auch immer ...
            
            
            zutaten_rezepte
            
            rezept | zutat | menge | einheit
            1         3       500      2   (bedeutet 500g Ente)
            1         1       1        1   (bedeutet 1 Prise Salz)
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Mit einer ordentlichen Datenbank (siehe das Beispiel von hausl) kannst du dann die Anzahl der Einträge in "zutaten_rezepte" für jeden Eintrag in "rezepte" zählen lassen. (Funktionen COUNT und GROUP BY) Das Ergebnis absteigend sortieren lassen (ORDER BY .... DESC) und dir die rezept_id als Ergebnis zurückgeben lassen. Schon hast du das Rezept mit der "höchsten" Übereinstimmung.

              Kommentar


              • #8
                Zitat von stan Beitrag anzeigen
                Also wenn ich das in eine andere Tabelle schreib, dann habe ich das Problem doch nur verschoben oder nicht ?
                hausl hat ja schon geschrieben wie es gemacht werden soll. Das nennt man Normalisierung.
                Du wirst das Konzept sicher bald verstehen, wenn Du etwas damit arbeitest.

                Kleine Einsteigerfrage dazu:
                Wie notierst Du Deinen Einkaufszettel, nebeneinander oder untereinander?

                Wenn Du Dir Deinen Einkaufszettel jetzt noch als Papier-Rolle anstelle eines Blocks oder Zettel vorstellst und zwar endlos, dann bist Du bei ein paar wichtigen Merkmalen von relationalen Datenbanken und was Deine Zutaten und Rezepte angeht auf dem richtigen Weg.

                Kommentar

                Lädt...
                X