Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 28 von 28

Thema: verzwicktes Select

  1. #16
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    du suchst personen die schwimmen UND Fußball spielen UND Deutsch UND Englisch sprechen?
    oder du suchst a) personen die schwimmen UND Fußball spielen und b) noch zusätzlich solche die Deutsch UND Englisch sprechen?
    religion is a virus from outer space

  2. #17
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    ich glaube er meint das erstere

  3. #18
    prograbbit
    Gast
    hallo,

    ich suche ersteres, also Personen die schwimmen UND Fußball spielen UND Deutsch UND Englisch sprechen.

    Was nach ein paar Tests funktioniert, ist die Aneinanderreihung etlicher joins. Ich frag mich nur, ob es auch eine elegantere und schnellere Abfrage gibt...

  4. #19
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    mit ein paar subselects gings auch, falls dein mysql das unterstützt:
    Code:
    select distinct id from sportart t1
      where sportart='fussball'
        and exists (select null from sportart where sportart='basketball' and id=t1.id)
        and exists (select null from sprache where sprache='deutsch'  and id=t1.id)
        and exists (select null from sprache where sprache='englisch' and id=t1.id);
    religion is a virus from outer space

  5. #20
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Immer diese Subselects...

    Für die Einbeziehung der zweiten Tabelle kannst du einfach einen der oben beschriebenen Queries um einen JOIN erweitern.

  6. #21
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    joins wollte er ja nicht und ich finde dass subselects leichter verständlich sind als join-ketten. und was ein vernünftiges datenbanksystem wie oracle unter der haube daraus macht wieder ganz was anderes
    religion is a virus from outer space

  7. #22
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von ninguno
    joins wollte er ja nicht
    Genau den Satz hatte ich überlesen

  8. #23
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    Zitat Zitat von prograbbit
    Was nach ein paar Tests funktioniert, ist die Aneinanderreihung etlicher joins. Ich frag mich nur, ob es auch eine elegantere und schnellere Abfrage gibt...
    ob es in diesem fall eleganter ist auf joins zu verzichten ist wohl fraglich.
    geschwindigkeit würde ein index bringen (falls die id nicht eh schon primary key ist)
    ansonsten den querryplan mal anschauen, um herauszufinden was da genau langsam ist

    greetz

  9. #24
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Zitat Zitat von ninguno
    joins wollte er ja nicht und ich finde dass subselects leichter verständlich sind als join-ketten. und was ein vernünftiges datenbanksystem wie oracle unter der haube daraus macht wieder ganz was anderes
    Oracle verlangsamt sogar ein
    SELECT * FROM table WHERE 1;
    gegenüber einem
    SELECT * FROM table;

    MySQL, MaxDB oder MS SQLServer.

    Wenn man Zeit hat, kann man ja Oracle oder Cloudscape einsetzen.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  10. #25
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    Zitat Zitat von Turbohummel
    Oracle verlangsamt sogar ein
    SELECT * FROM table WHERE 1;
    gegenüber einem
    SELECT * FROM table;
    ?? das erste statement ist auch kein gültiges SQL, damti ist es unendlich langsamer.

    -j

  11. #26
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Doch, ist es. Funzt in jedem DBMS und 1 ist als "TRUE" in SQL 92, 99 und 03 definiert.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  12. #27
    Registrierter Benutzer
    Registriert seit
    26.12.2002
    Ort
    Matrix
    Beiträge
    194
    SQL> select * from a where 1;
    select * from a where 1
    *
    ERROR at line 1:
    ORA-00920: invalid relational operator

  13. #28
    Registrierter Benutzer
    Registriert seit
    07.12.2001
    Beiträge
    27
    prograbit: gibt doch mal die komplette DB. Oder den Teil raus der deine 2 Tabellen kompletiert....wegen dem Tabellen Design ob das nicht einfacher geht.
    Sinn und Zweck eines RDBMS ist ja auch redundanzen zu vermeiden.

    Julius

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •