[C/C++] SQL Abfrage aus mehreren Tabellen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Epidrome, 30. Dezember 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 30. Dezember 2009
    SQL Abfrage aus mehreren Tabellen

    Hallo,
    ich habe in meine Datenbank 10 tabellen.
    In jede Tabelle gibt es tab_id,user_id,info.
    In mein Programm habe ich 10 Memo Felder.

    Wenn in Memo1 steht "ab", dann sollen alle user_ids ausgegeben werden wo im spalte info "ab" steht. Das klappt noch.

    Jetzt möchte wissen wie ich das lösen kann, wenn in Memo1 "ab", Memo3 "tb", Memo6 "as" und Memo7 "89" steht.
    Der sollte mir natürlich am ende die user_ids ausgeben, wo die eingaben vorhanden ist.

    Das heisst:
    in
    Tabelle 1 : ab
    Tabelle 3 : tb
    Tabelle 6 : as
    Tabelle 7 : 89

    Ergebnis: user_id : 5,14,21,33,100

    Habe es versucht mit eine sql abfrage nur der Rechner hängt sich bei der bearbeitung auf.
    Vorschläge ????

    Dank im Voraus.
     
  2. 30. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Allzu schwer wird das nicht sein, musst nur die Tabellen alle joinen. Hätte ich die Zeit würde ich dir die Query runtertippen, muss aber jetzt los

    Wenn hier morgen noch keine Lösung steht komm ich darauf zurück
     
  3. 30. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Haben die Tabellen irgendeine Beziehung untereinander oder sind es bloß 10 Tabellen welche alle unterschiedliche Daten enthalten?

    Sofern ich es richtig verstanden habe ist jedes MemoX für TabelleX zuständig und die Daten in dem Memo wirken sich nicht auf die Abfragen für andere Tabellen aus und sollen sich auch nciht auswirken?!

    Ich würde dann 10 Abfragen bauen, weil mit deinem Vorschlag hätte jede Änderung der Daten in nur einem Memo sonst eine große Abfrage zur Folge und für mehrere Abfragen nur eine kleine. Selbstverständlich fallen zu Beginn ersteinmal 10 Abfragen an, welche aber wieder kleinen Aufwand mit sich bringen!

    Letztlich gibt es aber auch keine richtige Lösung, sondern nur eine beste Lösung für diese Struktur! Evtl kannst du das Datenbank Layout und den Sinn und Zweck deines Vorschlages mal genauer erklären, sodass man vllt bessere Vorschläge machen kann?!
     
  4. 31. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Hi,
    die Beziehung ist user_id.
    Jeder user hat eine user_id, und jede tabelle hat diesen user_id.
    Das heisst user_id 5 ist in 10 tabellen vorhanden.
     
  5. 31. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Hallo

    Hängt natürlich ein bisschen vom SQL Dialekt ab (MSSQL, MySql, Orcale ?), aber etwa so:

    Code:
    SELECT 
     T1.[SpaltenName1] 
     , T2.[Spaltenname2]
     , T3.[Spaltenname3]
    FROM [Tabelle1] T1
    INNER JOIN [Tabelle2] T2 ON T1.[User_Id] = T2.[User_Id]
    INNER JOIN [Tabelle3] T2 ON T2.[User_Id] = T3.[User_Id]
    WHERE T1.[User_Id] = 1111
    
    Hoffe das hilft.

    BG MaxDev
     
  6. 31. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Hi,
    das ist nicht das Problem.
    Mit den werten, die in der spalten info sein müssen.
    Habe werte in spalte info die übereinsitmmen müssen ?
    Alle user_id aus der tabelle1 wo info = 'ab', usw... immer aussortieren.

    //==================================================
    Oder kann ich das mit arrays lösen ??
    erste abfrage alle user_ids in eine array,
    dann zweite abfrage dann die raus kicken aus der array die nicht mehr zu treffen usw....

    Spricht was dagegen alles in eine Tabelle zu machen???
    Eine Tabelle 30 spalten, ca 15000 einträge.
    //==================================================

    Bin für jede hilfe dankbar.
     
  7. 31. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Ich kann dir jetzt keine ganze SQL posten, aber folgendes gibt es auch (ist aber sehr rechenlastig):


    Code:
    SELECT xy FROM tabelle WHERE xy IN ('erster','zweiter','dritter');
    Möglich wäre also folgendes:
    Code:
    SELECT xy 
    FROM 
     tabelle 
    WHERE 
     xy IN (SELECT ab FROM tabelle2 WHERE ab = 'Yeah baby Yeah');

    Gibt's natürlich noch mit "NOT IN" usw. Such dir das am besten selbst in der MYSQL Doku zusammen.
    Ansonsten wüsste ich auch nur JOINS.
     
  8. 31. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Ist mit "spalte info" eine Spalte in der Tabelle gemeint, oder Kommentarfelder zu der Spalte ? Die wären dann in den Systemtabellen zu finden, die kannst Du ja auch joinen...

    Falls es eine Spalte an einer der "Benutzertabellen" ist, kannst Du auch mehrere Bedingungen in einem Join definieren (Joins finde ich schönen als Sub selects, ich weiss nicht was schneller ist). Das sieht dann etwa so aus...

    Code:
    SELECT
     T1.Spaltenname
     , T2.Spaltenname
    FROM Tabelle1 T1
    INNER JOIN Tabelle2 T2 ON T1.User_Id = T2.User_Id AND T1.Info = T2.Info
    WHERE T1.User_Id = 1
     T1.Info = 'Mein Info Text'
    
    Hilft Dir das weiter ?

    BG MaxDev

    //EDIT: Und ja, man KANN viel mit Arrays lösen, sicher auch Dein Problem. Aber sollten Datenabfragen nicht auf der Datenbank gemacht werden. Ich würde sagen, wenn möglich, immer ja.
     
  9. 31. Dezember 2009
    AW: SQL Abfrage mit 10 tabellen.

    Also was badloader gesagt hat, hatte ich schon gestern ausprobiert. Rechner hat sich aufgehangen.

    MaxDev das werde ich morgen früh testen.
    Es ist eine spalten, also tabelle besteht aus 3 spalten einmal primary key, dann user_id und am ende info.

    Wünsche euch guten rutsch.
    Werde die sachen in Neuen jahr testen.
     
  10. 2. Januar 2010
    AW: SQL Abfrage aus mehreren Tabellen

    Nein auch nicht.
    Muss alles in eine tabelle tun.
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.