tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
2154
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    d2mike d2mike ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    161
    Hallo!

    zur Erklärung:
    habe die Tabellen Province und Country. Ich will schaun, ob die Population von Country Austria mit der addierten Summe von Province (Wien, Kärnten, Burgenland etc) übereinstimmt. Aus diesem Grund will ich die 2 Werte subtrahieren. Kommt 0 raus --> stimmen sie überein

    PHP-Code:
    select sum(populationfrom province where country'A'
    minus
    select population from country where code 
    'A' 
    das kommt raus:
    PHP-Code:
    SUM(POPULATION)        
    ---------------------- 
    7989000                

    1 rows selected 
    DAS IST ABER FALSCH
    Die Summe von Population ist 7989000 ABER die Population in Country ist 8023244!
    Warum werden die 2 Werte nicht subtrahiert?

    Was mache ich falsch?!

    Danke für eure Hilfe!
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Dein Query ist nicht wirklich richtig, vermute ich, versuch es einmal so:

    Code sql:
    1
    2
    3
    4
    
    SELECT 
    (SELECT SUM(`population`) FROM `province` WHERE `country` = 'A') 
    -
    (SELECT `population` FROM `country` WHERE `code` = 'A')

    "minus" finde ich bei MySQL nicht.
    Funktioniert aber erst ab Version 4.1+, wegen der Subqueries.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    lmarkus31 lmarkus31 ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    318
    Hallo,

    MINUS gehört zu den Mengenoperatoren und hat nichts mit Subtraktion zu tun.
    Wenn es von der Datenbank unterstützt wird, so kann man damit die Datensätze erhalten, die im ersten SELECT-Block enthalten sind, abzüglich denen, die im zweiten SELECT-Block enthalten sind.
    Es wird also keinerlei Subtraktion durchgeführt, sondern nur eine Mengenoperation, vergleichbar mit UNION, UNION ALL, INTERSECT usw.

    So wie es Felix beschrieben hat, sollte es das Ergebnis bringen, was du erwartest.

    Markus
     

  4. #4
    d2mike d2mike ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    161
    Danke für die Antworten.
    Ich hab vergessen zu erwähnen, dass ich auf einer Oracle DB arbeite.
    Wenn ich jetzt deinen Vorschlag ausprobiere bekomme ich flg. Fehlermeldung:

    PHP-Code:

    Error starting at line 1 in command
    :
    select
    (select sum(populationfrom province where country 'A')
    -
    (
    select population from country where code 'A')
    Error at Command Line:4 Column:49
    Error report
    :
    SQL ErrorORA-00923Schlüsselwort FROM nicht an erwarteter Stelle gefunden
    00923. 00000 
    -  "FROM keyword not found where expected"
    *Cause:    
    *
    Action
     

  5. #5
    lmarkus31 lmarkus31 ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    318
    Hallo,

    ja bei Oracle musst du zwingend eine Tabelle in der FROM-Klausel angeben.
    Also in der äusseren Query einfach noch ein

    Code sql:
    1
    2
    
    ...
    FROM DUAL

    anhängen.

    Markus
     

  6. #6
    d2mike d2mike ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    161
    Danke für den Tipp!
    Meinst du das so?

    PHP-Code:
    select
    (select field from dual table)
    -
    (
    select field from dual table
    oder doch ganz anders?
     

  7. #7
    lmarkus31 lmarkus31 ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    318
    Hallo,

    nein so:

    Code sql:
    1
    2
    3
    4
    5
    
    SELECT
     (SELECT SUM(population) FROM province WHERE country = 'A')
     -
     (SELECT population FROM country WHERE code = 'A') 
    FROM DUAL

    Markus
     

  8. #8
    d2mike d2mike ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    161
    super danke es hat funktioniert
    Schönen Abend noch

    Michael
     

Ähnliche Themen

  1. Problem bei SOAP und default werten
    Von HyperTronix im Forum PHP
    Antworten: 2
    Letzter Beitrag: 27.06.09, 12:41
  2. Problem mit function und Übergabe von Werten.
    Von sid61 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 22.02.09, 17:50
  3. Problem mit Array und seinen Werten
    Von Arndtinho im Forum PHP
    Antworten: 1
    Letzter Beitrag: 18.12.07, 18:09
  4. Problem mit Koordinaten-Werten
    Von Fey im Forum Flash Plattform
    Antworten: 5
    Letzter Beitrag: 28.11.02, 15:39
  5. problem bei ausgabe von gefilterten werten...
    Von Alexander Schuc im Forum ASP
    Antworten: 2
    Letzter Beitrag: 20.12.01, 15:20