Zum Inhalt springen

ostpower

Mitglieder
  • Gesamte Inhalte

    170
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von ostpower

  1. Na ja gut, also mit dem verschachtelten Select hat des ja funktioniert, ich würd jetzt halt gern wissen was des fürn problem mit dem invalid identifier is
  2. CREATE TABLE Blubb AS SELECT x.*, c1.id as "dest", c1.name as "name" FROM (SELECT f.*, c.id as "org", c.name FROM tabelle1 f, tabelle2 c WHERE f.org = c.code)x, tabelle2 c1 WHERE x.dest = c1.code Das is es Statement. Und in der erstellten tabelle blubb is der spaltenname ja z.b. "dest" aber er lässt sich darüber nicht ansprechen. @TDM: Wie sieht das Statement denn mit dem join aus?
  3. Also folgendes Problem, ich hab mit nem en select mit nem subselect. Diese Ergebnisse hab ich mir direkt in ne Tabelle kopiert, also mit create table xyz as select ... So in dem select-befehl hab ich jetzt 3 spalten mit "as" angelegt, sprich die bezeichnung ist nicht gleich des spalten names sondern eben als beschreibung mit as. in der erstellen tabelle xyz heißen die spalten ja dann wie die as-bezeichnung. Also in dem select steht sowas wie z1.p_ID as "test" und die spalte in der erstellten tabelle heißt ja dann auch test. So jetzt wollt ich en select auf die spalte test machen, dann sagt er "invalid identifier". Also en *-Select auf die gesamte tabelle funktioniert, aber wenn ich eine dieser as-spalten ansprechen will kommt die fehlermeldung. Was ist das? ich hoff ich hab mich klar genug ausgedrückt ansonsten fragt nach
  4. Ja aber ich hab keine 2 zwischentabellen, ich hab eine zwischentabelle mit der ich die orts-nummern als name identifizieren kann
  5. ich habe 2 spalten in denen ortsangaben in ID-Form vorliegen, also z.b. 1234 für Berlin, 6357 für frankfurt etc. So jetzt ist die 1. Spalte der startort und die 2.spalte der ziel ort. mit einer zwischentabelle kann ich die zahlen als ortsnamen anzeigen lassen. allerdings hab ich jetzt ein problem beide spalten zu "entschlüsseln" Also das sieht so aus: Start____Ziel 3526____6265 2635____2276 2933____3336 1233____8236 2132____2337 Zwischentabelle: ID____NAME 3526__Berlin 3336__Frankfurt . . . So jetzt hab ich das statement: SELECT t.start,t.ziel,z.name FROM tabelle t,zwischentabelle z WHERE t.start = z.ID So damit wird die 1. spalte (start) als name ausgeben, aber wenn ich jetzt die 2.spalte auch als namen angegeben haben möchte, wie muss dass denn aussehn? also die tabelle soll dann in etwas so aussehn: Start____Ziel____OrtStart____Ortziel 3526____6265___Frankf______Berln 2635____2276___etc.... 2933____3336 1233____8236 2132____2337
  6. Hallo hab folgende frage zu sql-statements. Gibt es ein befehl mit dem ich eine Maximalanzahl an ergebnissen festlegen kann? Also wenn ich ein einfaches Select habe: SELECT * FROM Tabelle1; Dass dort höchstens 10.000 Zeilen ausgegeben werden sollen, wenn in dieser Tabelle z.b. 1.000.000 Datensätze existieren.
  7. Nein, das sind keine strings mit lauter strings. in der number-spalte würde das ja sowieso nicht gehn. Ich weiß halt nicht warum der mit der NULL-beschränkung nichts findet
  8. Das kommt daher da das die Daten aus 2 Datenbanken bzw. 2 unterschiedlichen System kommen und diese konsolidiert werden. Die Ort-ID's sind allerdings keine PLZ's sondern nach anderen Kriterien erstelle Nummern. Also Tabelle1 sieht so aus(gibt natürlich noch mehr Spalten als Ort, aber nur die is ja jetzt entscheidend): Ort ------ 1234 3363 2327 8363 Tabelle2: ID_____Ortsbez 1234___BER 3363___FRA 2327___COL 8363___HAM Diese beiden Tabellen sind Teil eines Systems mit sagen wir mal 10Mio Datensätzen. Tabelle3 stammt jetzt aus einem anderen System: Ort ----- FRA BER HAM COL Dort gibt es nur 1Mio Datensätze. Und ich möchte jetzt aus der Tabelle des 1 Systems die Datensätze rausfiltern, die denen des 2. Systems entsprechen. Also wenn es beispielsweise im System1 Datensätze gibt mit dem Ort XYZ gibt, die es in dem 2. System gar nicht gibt, dann möchte ich diese auch nicht ausgegeben haben.
  9. Also das funktioniert so nicht, ich hab das folgende Statement bei 2 Spalte ausprobiert wo es leere Felder gibt, die eine Spalte ist Number, die andere varchar2 SELECT count(spalte) FROM tabelle WHERE spalte IS NULL Immer kommt als Ergebnis 0 raus, des kann aber net sein, da es ja defacto leere felder gibt.
  10. ehm...da hast du recht...Moment ich probier das gleich mal aus, weil das hat glaub ich nicht funktioniert. Also du hast mir das ja geschickt: SELECT a.* FROM tabelle1 a, tabelleid ids, tabelleort ort WHERE ids.id=ort.id AND ort.ortname=a.ortname Aber die letzte Where-Bedingung geht ja nicht, da in der a-Tabelle keine Orstname steht sondern nur die ID
  11. Ich habe 3 Tabellen die ich miteinander verknüpfen will, ich weiß jetzt nicht genau wie ich den Join machen soll. Also in einer Tabelle gibt es eine Spalte in der eine Ortsbezeichnung als ID vermerkt ist, also dort steht dann nicht "Berlin" sondern "1234". In einer 2. Tabelle gibt es dann eine Aufschlüsselung in der man nachschauen kann dass 1234 --> Berlin bedeutet. Jetzt hab ich noch eine 3. Tabelle in der es eine Ortsspalte gibt, wo der Name drin steht, also Berlin z.b. Jetzt ist es so dass die 1. Tabelle nur einen Teil der Daten hat, die es auch in der 3. Tabelle gibt. Ich möchte mir jetzt aus der 1. Tabelle nur die Datensätze ausgeben lassen, die denen der 3. Tabelle entsprechen (indem ich nachdem Ort selektiere) Also ich müsste ja dann erst mal ein join machen von der 1.Tabelle und der 2.Tabelle dass ich weiß welche ID welchem Ort zugeordnet ist. Und wie join ich dann die 3.Tabelle?
  12. Wenn ich folgendes Statement habe: select spalte from tabelle where spalte like '%Blubb%' so jetzt möchte ich aber statt dem blubb eine andere spalte haben also so: select spalte from tabelle where spalte like '%spalte2%' wie mach ich das?
  13. Ich hab ne spalte wo bei manchen datensätzen diese spalte leer ist, also wo manche einträge leer sind, diese möchte ich auffüllen, jetzt hab ich mir des so gedacht: UPDATE tabelle SET spalte = 'blubb' WHERE spalte = ' '; des geht aber net, was muss ich anders machen?
  14. Also mein Statement sieht so aus: select m.day_id,m.t_orgmon,m.orgapt_id,m.destapt_id,m.t_al_all,m.t_tr_cls,m.trtype,s.s_cls,a.t_bkgmon from zz_p1.dm_market m, zz_p1.dm_abhist a, zz_p1.dm_seg_infos s where m.t_orgmon = a .t_orgmon and a.t_orgmon = s.t_orgmon and m.orgapt_id = a.t_orgapt_id and a.t_orgapt_id = s.t_orgapt_id and m.destapt_id = a.t_dstapt_id and a.t_dstapt_id = s.t_dstapt_id and m.t_al_all = a.t_al_all and a.t_al_all = s.t_al_all; Was ist ein parallel query und en distinct oder so hab ich ja gar net.
  15. Hey Leude, ich bekomm bei nem Joinen von 3 Tabellen folgende Fehlermeldung: ORA-12801:error signaled in parallel query server P032 ORA-01652: unable to extend temp segment by 128 in tablespace ADV_TEMP_04 woas is des?
  16. Das mit den Monaten ist kein Problem, da in den betreffenden Anwendungen immer mit 30 Tagen gerechnet wird.
  17. Servus, also es geht um 2 varchar2-Spalten. In der einen Spalte sind Zeiten angegeben in Form von z.b. "21D" --> 21 Tage oder "3M" --> 3 Monate oder auch 5H --> 5 stunden Diese möchte ich gerne umwandeln damit über all z.b. die Anzahl der Tage drin steht, also bei allen Werten mit D müsste man dann das D abschneiden und bei den andern Werten mit M müsste man das M abschneiden und die Zahl davor mal 30 nehmen, analog dazu für die Stunden. Wie könnte so ein Script aussehn, weil mit reinem SQL kommt man da nicht weiter oder? Also man müsste hier wohl PL/SQL anwenden, ich weiß allerdings nicht so recht wie ich vorgehen soll. Bei der 2. Spalte ist die Ausgangslage ähnlich, dort geht es vor allem darum Zeichen abzuschneiden, da bei einen Werten ein "+" angefügt ist, welches weg muss, also der Wert ist dann z.b. "1234+" und das + soll weg.
  18. Ok eine Frage hät ich noch. Und zwar zeigt er mir an dass er alle Zeilen geupdatet hat, aber normal sollte er doch nur die zeilen updaten die dem format dd-mon-yy entsprechen. was hat er also mit den einträgen gemacht die schon korrekt waren? weil durch die bedingungung where a like '__-___-__' sollten ja alle einträge ausgeschlossen werden die z.b. so sind 11.11.1911 Des verwirrt mich jetzt en bissel dass der jetzt alle geupdatet hat
  19. Ja wie hätte ich das denn sonst machen sollen? Ich hab das ja nicht freiwillig gemacht, aber die Daten kamen aus einer anderen Datenbank über eine CSV-Datei, und diese Daten musste ich ja erstmal in die DB reinbekommen und da eben in der Datumsspalte nicht alle Einträge Date-konform war konnte ich diese ja auch nicht in eine Date-Spalte importieren, da es da ja geknallt hätte.
  20. Ja das hab ich mir gedacht, also ich weiß net was bei uns unterschiedlich is aber irgendwas ist es, also ich hab das mal alles genauso gemacht wie dus gemacht hast du bei ausführung des update-statement kommt wieder die fehlermeldung: ORA-01858: a non-numeric character was found where a numeric was expected ------------------------------------------------------------------------------ OK, des war wieder des language-problem. Also es funktioniert! Boah das nervt, weißt du ob ich das irgendwie einstellen kann dass der die language immer auf american lässt? weil ich muss des sonst jedes ma aufs neue machen und wenn ichs ma vergess kommen fehler wie die beschriebenen. Hm ok noch ein update, also bei meinen daten kommt immer noch diese fehlermeldung trotz sprachänderung, liegt es daran dass bei mir die daten vielleicht zum teil in deutsche als auch amerikanischen format vorliegen oder ist das ein anderer grund? Ok noch ein update, also wenn dein update-statement auf meine spalte aus der zwischentabelle anwende, also der spalte, wo nur unkonforme dates drin stehn, dann geht das. Das würde gleichzeitig bedeuten, dass er bei den konformen dates probleme hat und deswegen den fehler ausgibt, was allerdings komisch is, weil genau das hast du ja als beispiel gemacht
  21. Das funktioniert so nicht. Also mein Befehl sieht so aus: Also ohne eine neue Spalte, ich kann ja dann auch einfach die bestehende Spalte updaten. update dm_fares_temp set eff = to_char(to_date(eff,'DD.MM.YYYY')); Dann kommt aber der Fehler: ORA-01858: a non-numeric character was found where a numeric was expected Also wie sieht jetzt ein korrektes Statement aus, mit dem ich die Datumsspalte insofern bereinige, damit alle DD-MON-YY in DD.MM.YYYY umgewandelt werden?
  22. Hm...ok und die korrekten Datums wie 01.01.2006 werden auch so übernommen und die anderen werden dann eben konvertiert?
  23. Ich steh grad aufm schlauch, also wie soll ich des dann denn sonst lösen? also ich hab in der datumsspalte der ursprungstabelle folgende werte stehn: Datum ------ 12.10.2006 12.10.2006 14-MAR-07 20-JUL-05 20-JUL-05 20-JUL-05 11.06.2006 31.03.2007 Und ich möchte alle Werte mit dem Format DD-MON-YY in das Format DD.MM.YYYY umwandeln
  24. warum denn nur ein feld? mit "set datumspalte" änder ich doch ALLE Felder in dieser spalte die mit der where-klausel ausgewählt werden. Also es sollen in der datumsspalte alle werte geändert werden die gleich denen aus der spalte a der zwischentabelle sind, das sind die datums mit dem format DD-MON-YY
  25. Also nochmal zum verständnis ich führe folgenden code aus: update ursprungstabelle set datumsspalte = (SELECT to_char(to_date(datumsspalte,'DD-MON-YY'),'DD.MM.YYYY') FROM ursprungstabelle where exists ( select a from zwischentabelle where ursprungstabelle.datumsspalte=zwischentabelle.a )); und bekomme diese fehlermeldung: The following error has occurred: ORA-01427: single-row subquery returns more than one row

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...