tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
446
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Tommy57 Tommy57 ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    137
    Hallo,

    ich habe eine Tabelle mit Autos, wo jede ID einem Typen OHNE Baujahr entspricht.

    In einer zweiten Tabelle habe ich AutoID, Baujahr und Preis, wo ich nun ALLE AutoIDs abfragen möchte, die es genau in den Baujahren 1998, 1999 und 2000 gibt.

    Hat da jemand eine Idee, wie das gehen soll?

    Gruß, Tommy
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Jepp. Du brachst die erste Tabelle gar nicht.

    Code sql:
    1
    2
    3
    4
    5
    6
    
    SELECT
        autoIid
    FROM
        table2
    WHERE
        baujahr IN (1998, 1999, 2000)

    Ok, du willst wahrscheinlich noch die AUto-Infos dazuhaben. Dann gibts ein INNER JOIN
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    SELECT
        t2.autoIid
        t1.TYPE,
        t1.marke
    FROM
        table2 AS t2
        INNER JOIN table1 AS t1
            ON t2.autoid = t1.id
    WHERE
        t2.baujahr IN (1998, 1999, 2000)
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Tommy57 Tommy57 ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    137
    Hallo Yaslaw,

    IN ist doch eine ODER Verknüpfung?

    Also ich brauche ja die AutoIDs, die genau ALLE Baujahre besitzen und nicht nur eins von denen.

    Gruß, Tommy
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Aso. Alles klar. Dort ist das Problem behoben.

    Filtern, Gruppieren und Zählen

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    SELECT
        autoid
    FROM
        table2 t2
    WHERE
        t2.baujahr IN (1998, 1999, 2000) 
    GROUP BY
        autoid
    HAVING
        COUNT(*) = 3
    Tommy57 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Tommy57 Tommy57 ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    137
    Super danke,

    das habe ich gesucht
     

  6. #6
    Tommy57 Tommy57 ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    137
    Hi Yaslaw,

    irgendwas stimmt da nicht. Also ich kriege da komplett wirre Ergebnisse.

    Wenn ich die Auto IDs nun nach Baujahren überprüfe, habe ich meist exakt nur EINEN Treffer.

    Sogar folgendes Statement liefert Ergebnisse:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    SELECT
        autoid
    FROM
        table2 t2
    WHERE
        t2.baujahr IN (789, 98765, 2000) 
    GROUP BY
        autoid
    HAVING
        COUNT(*) = 3

    Gruß, Tommy
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ich geh von MySQL aus. Du Auch?
    Ist Baujahr Varchar?

    Mein Test funktioniert
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    SELECT
        autoid
    FROM
        -- Tabelle simulieren
        (
            SELECT 1 AS autoid, 1972 AS baujahr
            UNION SELECT 1 AS autoid, 1973 AS baujahr
            UNION SELECT 1 AS autoid, 1974 AS baujahr
            UNION SELECT 1 AS autoid, 1975 AS baujahr
            UNION SELECT 1 AS autoid, 1976 AS baujahr
            UNION SELECT 2 AS autoid, 1973 AS baujahr
            UNION SELECT 2 AS autoid, 1974 AS baujahr
            UNION SELECT 2 AS autoid, 1977 AS baujahr
            UNION SELECT 2 AS autoid, 1978 AS baujahr
        ) AS t1
    WHERE
        baujahr IN (1972, 1973, 1974)
    GROUP BY
        autoid
    HAVING
     COUNT(*) = 3
     
    -- gibt 1 zurück
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    Tommy57 Tommy57 ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    137
    Also ich benutze Postgres und dein Beispiel funktioniert.

    Teste ich vergleichbare Statements an anderer unserer Tabellen, klappt es auch. Aber das Statement, bei der Tabelle, wo ich es brauche, funktioniert nicht. Kann das vielleicht daran liegen, dass die Tabelle partitioniert ist, was ich aber nicht glaube. Oder vielleicht eine andere Idee, woran es liegen kann. Die Ergebnisse, die ich kriege, sind wirr und haben meist nur eine Übereinstimmung.

    Gruß, Tommy
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Sorry, kenne Postgres nicht.

    - Wie schon beschrieben - ist Baujahr als Nummer gespeichert?

    - Hast du ev. mehrere Einträge mit der gleichen Kombination autoid/baujahr?
    Tommy57 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    Tommy57 Tommy57 ist offline Mitglied Gold
    Registriert seit
    Dec 2010
    Beiträge
    137
    - Wie gesagt, funktioniert identisch.

    - Ja, sind Zahlen.

    - Ja, ich habe tausende Einträge mit der gleichen Kombination autoid / baujahr.


    EDIT: Wenn ich vorher ein GROUP BY über ein Subquery mache, dann funktioniert es. Der Fehler lag darin, dass es mehrere Einträge mit der gleichen Kombination gab.

    Vielen Dank!
    Geändert von Tommy57 (16.01.12 um 01:15 Uhr)
     

Ähnliche Themen

  1. Onmouseover über mehrere Zeilen
    Von Antispy im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 30.07.08, 11:14
  2. Onmouseover über mehrere Zeilen
    Von Antispy im Forum CSS
    Antworten: 0
    Letzter Beitrag: 28.07.08, 10:07
  3. ColumnHeader über mehrere Zeilen
    Von cHucKy51 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 8
    Letzter Beitrag: 27.06.07, 10:17
  4. regex über mehrere Zeilen
    Von r0bby im Forum Java
    Antworten: 5
    Letzter Beitrag: 14.06.06, 15:26
  5. regex über mehrere Zeilen
    Von r0bby im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 14.06.06, 10:50