wie umgehe ich unterabfragen am besten?? (mysql)

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

  • antwortet
    Ja,sollte man meinen!

    Bei einer 1:1 - Beziehung - kein Thema!. Aber bei einer 1:n -Beziehung erziele wiedersprüchliche Resulte. Vermute hat etwas Tabellenanordnung und zu erwartene Hits zu tun.

    Leider habe ich zu wenig Ahnung von JETs um weiter nachzuvollziehen. Deshalb die Frage.

    Einen Kommentar schreiben:


  • antwortet
    ah so ... war davon ausgegangen, dass manche Menschen mehrere Fremdsprachen beherrschen.

    darum dachte ich

    Leutz: ID, Name
    Sprachen: ID, Name
    Sprachkenntnisse: Leutz_ID,Sprach_ID

    und in dem Fall wäre ein left join schneller als die distinctrow-Query.

    Einen Kommentar schreiben:


  • antwortet
    Weil ihr gerade davo sprecht:

    Ich erziele oft mit der Formulierung

    SELECT DISTINCTROW * FROM User AS A,fskenntnisse AS B WHERE A.spach_id=B.fskenntnisse

    eine bessere Laufzeit-Betrachtung als durch eine INNER (LEFT) JOIN -Formulierung.

    Weiß einer wieso?!

    Blaster

    Einen Kommentar schreiben:


  • antwortet
    Ja, hab ich vergessen... Aber DB-Normierung ist das ja nicht, was er da macht, denn das müsste doch meiner Meinung nach so aussehen:

    Code:
    table user
    name    | sprach_id
    schmidt | 1
    
    table fskenntnisse
    id | bezeichnung
    1  | Englisch
    Oder habe ich das jetzt verplant...?

    Einen Kommentar schreiben:


  • antwortet
    BLOSS NICHT!!!!

    Dann ist doch die ganze Normierung futsch!!!!

    Benutz left join statt normaler Verknüpfungen ... das geht um einiges schneller, und die DB bleibt normiert.

    also:
    select User.* from User U
    left join Sprachkenntnisse S on S.USER_ID=U.ID
    where U.NAME='Schmidt' and S.SPRACHE='Englisch'


    Nachtrag@Sky: Du hast die Verknüpfung der Tabellen "daten" und "fskenntnisse" vergessen.

    Einen Kommentar schreiben:


  • antwortet
    Danke,

    ich glaub das könnt ich hinkriegen - ansonsten meld ich mich halt nochmal :-)


    Gruss


    Thommy

    Einen Kommentar schreiben:


  • antwortet
    Wie würdet ihr das machen?
    Eiegntlich gar nicht so... Warum benutzt du denn zwei Tabellen dafür? Alle Infos über eine Person können doch in eine Tabelle.

    Aber wenn du möchtest:

    SELECT rows FROM daten,fskenntnisse WHERE daten.nachname='Schmidt' AND fskenntnisse.englisch='1'

    Einen Kommentar schreiben:


  • Thommy
    hat ein Thema erstellt wie umgehe ich unterabfragen am besten?? (mysql).

    wie umgehe ich unterabfragen am besten?? (mysql)

    Hallo an alle,

    hab ein Problem mit einer my-sql abfrage (welcher eigentlich ne Unterabfrage enthält). Ich zeig euch mal ein kleines Beispiel meines Problems.

    Ich habe zunächst eine

    Tabelle 1, welcher Daten von Personen enhält (also z.B. folgende Felder: Nachname, Vorname, Geburtsdatum)

    Tablle 2 enhält nun die Fremdsprachenkenntnisse dieser Personen (also z.B. folgende Felder: Französisch, Englisch, Spanisch)

    Nun möchte ich eine Abfrage starten, die mir alle Personen zeigt welche Schmidt heißen und Englisch können. (die eigentlich Datenbank is noch viel umfangreicher - so dass ich auch Abfragen dieser Art brauche welche über 4-5 Tabellen gehen - ist also nur ein kleines Beispiel)

    Wie würdet ihr das machen?


    Riesen Dankeschön im vorraus!!!!


    Thommy
Lädt...
X