Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: View mit vergleich(Wo ist der Fehler??)

  1. #1
    BoOnOdY ist offline Benutzer
    Registriert seit
    15.07.2006
    Beiträge
    72

    Standard View mit vergleich(Wo ist der Fehler??)

    Hy
    ich habe einen View erstellt mit dem ich etwas vergleichen will,
    aber wenn ich den SQL-Befehl ausführe den ich anhänge ändert er es wie folgt.
    Code:
     SELECT grouped_calls.ausgangsnummer, ( SELECT destination.name
               FROM destination
              WHERE grouped_calls.ausgangsnummer like(destination.dialcode || '%')
              ORDER BY char_length(destination.dialcode) DESC
             LIMIT 1) AS location, grouped_calls.calls_count
       FROM ( SELECT call_test.ausgangsnummer, count(*) AS calls_count
               FROM call_test
              GROUP BY call_test.ausgangsnummer) grouped_calls;
    dann speichert er das und zeigt mir das:

    Code:
    CREATE OR REPLACE VIEW calls_view AS 
     SELECT grouped_calls.ausgangsnummer, ( SELECT destination.name
               FROM destination
              WHERE grouped_calls.ausgangsnummer::text ~~ (destination.dialcode::text || '%'::text)
              ORDER BY char_length(destination.dialcode::text) DESC
             LIMIT 1) AS "location", grouped_calls.calls_count
       FROM ( SELECT call_test.ausgangsnummer, count(*) AS calls_count
               FROM call_test
              GROUP BY call_test.ausgangsnummer) grouped_calls;
    Warum kommentiert der mir das aus?? Ich finde den Fehler nicht.


    Gruß BoOnOdY

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von BoOnOdY Beitrag anzeigen
    Hy
    ich habe einen View erstellt mit dem ich etwas vergleichen will,
    aber wenn ich den SQL-Befehl ausführe den ich anhänge ändert er es wie folgt.
    Code:
     SELECT grouped_calls.ausgangsnummer, ( SELECT destination.name
               FROM destination
              WHERE grouped_calls.ausgangsnummer like(destination.dialcode || '%')
              ORDER BY char_length(destination.dialcode) DESC
             LIMIT 1) AS location, grouped_calls.calls_count
       FROM ( SELECT call_test.ausgangsnummer, count(*) AS calls_count
               FROM call_test
              GROUP BY call_test.ausgangsnummer) grouped_calls;
    dann speichert er das und zeigt mir das:

    Code:
    CREATE OR REPLACE VIEW calls_view AS 
     SELECT grouped_calls.ausgangsnummer, ( SELECT destination.name
               FROM destination
              WHERE grouped_calls.ausgangsnummer::text ~~ (destination.dialcode::text || '%'::text)
              ORDER BY char_length(destination.dialcode::text) DESC
             LIMIT 1) AS "location", grouped_calls.calls_count
       FROM ( SELECT call_test.ausgangsnummer, count(*) AS calls_count
               FROM call_test
              GROUP BY call_test.ausgangsnummer) grouped_calls;
    Warum kommentiert der mir das aus?? Ich finde den Fehler nicht.


    Gruß BoOnOdY
    Ich kann keinen Kommentar erkennen. PG formuliert etwas um, damit es klarer wird, was zu tun ist, so beschreibr er z.B. mit dem ::text den korrekten Datentyp, und er ändert like in ~~. Ansonsten ist da kein Unterschied für mich erkennbar.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Was ist denn da auskommentiert?

    Die ~~ stehen für einen Regexp Vergleich.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  4. #4
    BoOnOdY ist offline Benutzer
    Registriert seit
    15.07.2006
    Beiträge
    72

    Standard

    achso, sorry,
    aber irgendwie macht der das mit location trozdem nicht, dann stimmt wohl was anderes nicht.
    Was macht das Programm eurer Meinung nach? Nur damit ich ma wieder Überblick bekomme. Seh nämlich im Moment nicht, warum der mir die location nicht anzeigt ...
    das "%" ist doch in SQL auch ein Platzhalter, oder?
    Also es sagt, dass Dialcode+irgendwelche anderen zahlen dér Vergleichsoperator ist?
    Geändert von BoOnOdY (02.01.2007 um 12:33 Uhr)

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Weiss ja nicht mal richtig, was du erreichen möchtest.

    Funktioniert denn der Query, wenn du ihn ohne View absetzt? Liefert der Subselect das von dir gewünschte Ergebnis, wenn du ihn einzeln ausführst?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    BoOnOdY ist offline Benutzer
    Registriert seit
    15.07.2006
    Beiträge
    72

    Standard

    Also jetzt nur der Vergleich, weil der Rest ist ja eigentlich egal:

    Der vergleich soll 2 Tabellen nehmen und gucken
    ob irgendwo in der Tabelle Destination in der Spalte Dialcode eine Nummer ist, die genau dem Anfang von dem Datensatz aus der Tabelle Call_test und der Spalte Ausgangsnummer ist.

    Also die Herkunft eines Anrufes identifizieren.

  7. #7
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Und funktioniert dieser Vergleich, wenn du ihn einzeln ausführst, mit deinen Testdaten?

    Hast du Umstände wie nationale/internationale Vorwahlen beachtet?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  8. #8
    BoOnOdY ist offline Benutzer
    Registriert seit
    15.07.2006
    Beiträge
    72

    Standard

    Also ich teste im Moment diese Funktion
    Code:
    SELECT name, ausgangsnummer
               FROM destination,call_test    
              WHERE call_test.ausgangsnummer like (destination.dialcode||'%')
              ORDER BY char_length(destination.dialcode) DESC
             LIMIT 1;
    da bekomm ich aber nie was ausgegeben....
    Die Vorwahl stimmt schon, aber war ne gute Idee.

    Also ich vergleiche die Nummer die ich bekommen habe mit der Destinationsvorwahl... und bekomm nie was ausgegeben.

    Hab auch ma die Logig ein bisschen umgebaut, aber bekomm nichts ausgegeben... ist in der Abfrage irgend ein Denkfehler?

    Was für Gründe kann es haben wenn der nichts ausgibt? Außer das er keine Ergebnisse hat?
    Geändert von BoOnOdY (02.01.2007 um 13:24 Uhr)

  9. #9
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von BoOnOdY Beitrag anzeigen
    Also ich teste im Moment diese Funktion
    Code:
    SELECT name, ausgangsnummer
               FROM destination,call_test    
              WHERE call_test.ausgangsnummer like (destination.dialcode||'%')
              ORDER BY char_length(destination.dialcode) DESC
             LIMIT 1;
    da bekomm ich aber nie was ausgegeben....
    Die Vorwahl stimmt schon, aber war ne gute Idee.

    Also ich vergleiche die Nummer die ich bekommen habe mit der Destinationsvorwahl... und bekomm nie was ausgegeben.

    Hab auch ma die Logig ein bisschen umgebaut, aber bekomm nichts ausgegeben... ist in der Abfrage irgend ein Denkfehler?

    Wilde Vermutung:

    Deine Spalten sind vom Typ char(N). Dieser wird mit Spaces aufgefüllt, daher klappt das ned.
    Du kommst mit TEXT besser, oder trenne Leerzeichen ab, vor dem Vergleich.
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  10. #10
    BoOnOdY ist offline Benutzer
    Registriert seit
    15.07.2006
    Beiträge
    72

    Standard

    Hy,
    es ist in der tat ein varchar.. ich werde es mal ändern und noch mal probieren
    vielen Dank schon ma

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Problem Vergleich mit Bedingung
    Von strippenzieher im Forum SQL
    Antworten: 2
    Letzter Beitrag: 01.05.2011, 14:48
  2. DB Vergleich
    Von acki4711 im Forum Allgemeines
    Antworten: 11
    Letzter Beitrag: 14.04.2008, 12:26
  3. Vergleich MySQL-PostgreSQL
    Von Gisman im Forum Allgemeines
    Antworten: 0
    Letzter Beitrag: 06.02.2008, 10:38
  4. PG <-> Pl vergleich (Vor-Nachteile)
    Von dasago im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 05.02.2008, 10:32
  5. Antworten: 5
    Letzter Beitrag: 08.03.2006, 19:32

Berechtigungen

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

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum