WinFuture-Forum.de: Sql-fehler Gesucht ... - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Sql-fehler Gesucht ...


#1 Mitglied ist offline   du ciel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 148
  • Beigetreten: 03. Dezember 04
  • Reputation: 0

  geschrieben 28. Mai 2006 - 13:40

Hallo,

bin grad am SQL-lernen für ne Klausur am Do. und ich krieg immer ne Krise wenn ich bei nem eigentlich leichten Ausdruck den Fehler nicht finde ... vielleicht kann mir wer helfen? andere Augen sehen manchmal schneller:

select geb.* from geb where geb_kz not in (select geb_kz from geb_flst)

=> richtiger Ausdruck, richtiges Ergebnis...

select geb.* from geb, geb_flst where geb.geb_kz not in geb_flst.geb_kz

=> müsst eigentlich dasselbe Ergebnis sein, ist es aber nicht, er listet im DB-Visualizer alles, jedenfalls mehr als 500 auf obwohl es nur 100 Datensätze sein sollen

ich wäre echt dankbar für ne Lösung :-)


Gruß
du ciel
0

Anzeige



#2 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 28. Mai 2006 - 19:10

vlt solltest du ein limit angeben
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#3 Mitglied ist offline   du ciel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 148
  • Beigetreten: 03. Dezember 04
  • Reputation: 0

geschrieben 28. Mai 2006 - 20:36

hmm, ein Limit setzen? warum? ... beide Ausdrücke sind ja synthaktisch korrekt führen jedoch zu anderen Ergebnissen ... das Limit im Programm liegt bei 500 was ausreicht, und das richtige Ergebnis kenne ich ja auch ... ich versteh nur nicht, warum nicht beide Ausdrücke zum selben Ergebnis führen ...

naja, muss ich mir eben den richtigen Befehl merken


gruß
du ciel
0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 28. Mai 2006 - 21:09

Die beiden Ausdürcke sind mitnichten semantisch äquivalent und ich weiß auch nicht, warum du darauf kommst. geb_flst.geb_kz ist dort jeweils ein konkreter Wert und das "in" wird zu Relation über Strings.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#5 Mitglied ist offline   du ciel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 148
  • Beigetreten: 03. Dezember 04
  • Reputation: 0

geschrieben 29. Mai 2006 - 16:49

*grübl*
wie ich darauf komme?

select flst_z, flst_n from flst where flst_kz in (select flst_kz from flst_bl where bl_id in (select bl_id from bl where bnutzung = 'G' ))

ist dasselbe wie
select flst_z, flst_n from flst, flst_bl, bl where flst.flst_kz = flst_bl.flst_kz and flst_bl.bl_id = bl.bl_id and bl.bnutzung = 'G'

... oder etwa nicht?

uns hat man der übersicht wegen letztere methode empfohlen ... nun dacht ich mir, dass müsste auch bei einer "not in"-operation hinhauen, aber scheint es wohl nicht.

Warum: DAS hab ich ehrlich gesagt noch nicht geschnallt ... denn bei beiden ausdrücken werden einfach nur tabellen verknüpft und anschl. eine bedingung gesetzt ... mit einem NOT IN funktioniert es nicht, sonst aber schon? ich sehs zumindest noch nicht :D
es soll doch eigentlich nur verglichen werden, ob ein bestimmtes attribut einer tabelle auch in einer anderen tabelle vorhanden ist ... falls nicht, soll er den datensatz ausgeben ...
0

#6 Mitglied ist offline   markus_83_nrw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 615
  • Beigetreten: 21. Juli 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bonn

geschrieben 30. Mai 2006 - 11:15

Hallo du ciel,

ähm der übersichtshalber hat man dir eine andere schreibweise empfohlen. Wer erzählt den sowas?!
ich finde deinen ersten quelltext mehr als übersichtlich und ich verstehe auch schneller was du vorhast.
Wenn du nur den zweiten quelltext nimmst wird es nicht ersichtlich was du vorhast.

die option in oder not in erwartet ein liste von werten wie z.b. ... in (3456,1223,8965,3456) oder halt eben die unterabfrage in (SELECT ...... FROM ......).

Um dir weiter helfen zu können brauche in ein datenbankschema von dir.


Gruß Markus
Rechtschreibfehler dienen der Belustigung der Leser :D :D
--------------------
Tower: Chieftec - "Medium Tower" der Dragon Serie Blau
CPU: 3.2 GHz AEP bei IDEL 35°-36° bei VOLLLAST ~ 45° (Windows Vista Index: 4,3)
Speicher: 2 GB MDT RAM (4*512 MB RAM PC3200) (Windows Vista Index: 4,5)
GraKa: GeCube ATI Radeon X1950 Pro @ Standard: 575/1380 (Windows Vista Index: 5,9)
HDDs: 80GB Seagate SATA 7200 Umin + 30GB Maxtor PATA (Windows Vista Index: 4,9)
Mainboard: Gigabyte 4P Titan; Chipsatz 865PE
Sound: Sound Blaster Audigy 2 ZS
OS: Windows Vista Ultimate - vLite Edition :D
Breitband: 3PLAY (ISH) 6000 MBit / pings bei ~40
0

#7 Mitglied ist offline   du ciel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 148
  • Beigetreten: 03. Dezember 04
  • Reputation: 0

geschrieben 30. Mai 2006 - 19:31

danke euch! ... die datenbank kann ich leider nicht zur verfügung stellen aber is ja auch nicht nötig, ich glaub ich habs kapiert :cool:

bei komplexen verknüpfungen finde ich es aber auch übersichtlicher, letztere methode zu verwenden um dutzende klammerungen zu vermeiden ... und bei dem bsp. aus meinem 2. posting ist das ergebnis ja auch dasselbe ... ich wollte das vorgehen dann gleich auf alles anwenden was mir so über den weg läuft <_<


gruß
du ciel
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0