Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei join benötigt

Einklappen

Neue Werbung 2019

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

  • Hilfe bei join benötigt

    hi bin mysql anfänger und habe ein kleines problem mit joins...

    2 tabellen:

    tabelle a:

    user|id
    pete| 1
    bert|2

    tabelle b:

    id|skills
    1 | 'tauchen'
    1 | 'schwimmen'
    2 | 'skaten'
    2 | 'klettern'

    folgendes problem.
    ich möchte nicht nach user prüfen sondern auf skills ...


    meine idee war :

    ( "SELECT distinct a.* FROM people a
    , people_skills b where a.id = b.id && (c.skills = ('tauchen')) && ((c.skills = ('schwimmen') )
    ");

    nach dieser abfrage sollte eigentlich das array mit den daten des users pete befüllt sein... geht aber nicht ....

    ich kann nur auf einzelne skills prüfen und erhalte dann ein richtiges ergebnis aber mehrere skills funktioniert leider nicht.

    jetzt wollte ich wissen was die beste methode ist um meine abfrage zu formulieren?

    Vielen Dank jetzt schon mal

    Lg Wolfgang


  • #2
    Das Problem ist, dass c.skills nicht gleichzeitigt "tauchen" und "schwimmen" sein kann.

    Was du mit deinem JOIN machst ist ja im Prinzip nichts anderes als aus zwei Tabellen eine zu machen, sprich du hast dann:
    id | user |skills
    1 | pete | tauchen
    1 | pete | schwimmen
    2 | bert | skaten
    2 | bert | klettern

    Darauf machst du dann deine WHERE-Abfrage und wählst die Einträge bei denen in "skills" "tauchen" steht. Dann hast du:
    1 | pete | tauchen.
    Jetzt noch die per && verknüpfte Bedinung skills="schwimmen" dazu und zack: hast du garkein Ergebnis mehr.

    Du könntest das in diesem Fall dadurch lösen, dass du zweimal auf die skills-Tabelle joinst.
    Create your own quiz show.

    Kommentar


    • #3
      thx für den tip! hab das mit 2 joins schon probiert aber mit 2 mal der selben spalte schaffe ich es leider nicht... weißt du vielleicht irgendwo ein refferenzbeispiel oder könntest mir selbst noch codemäßig erklären wie du das mit den 2 joins gemeint hast?

      Vielen Dank Lg Wolfgang

      Kommentar


      • #4
        Mehrfaches joinen ist problematisch, falls du vorher nicht einschätzen kannst wieviele joins du brauchst. Manche Datenbanken haben ein join-Limit. Wenn du beispielsweise nach einer Person suchst, die 20 Skills hat, dann dürften da die meisten Datenbanken aufgeben (korrigiert mich, wenn das inzwischen nicht mehr so ist).

        Eine - zugegebenermaßen unintuitive - Lösung wäre statt den UND Verknüpfungen ODER Verknüpfungen zu verwenden. Dann das ganze nach der Person gruppieren und abfragen ob die Anzahl der Datensätze in der Gruppe der Anzahl der Kriterien entspricht.

        Kommentar

        Lädt...
        X