SQL Select aus mehreren Tabellen

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

Jan_

Ehemaliger Admin

Betreff: SQL Select aus mehreren Tabellen

BeitragMo, Feb 19, 2018 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

irgendwie fühle ich mich gerade sehr dämmlich.
Ich will ein * - Select auf mehrere Tabellen machen, ohne Verknüpfung der Tabellen untereinander.

select * from personc_0_1997_0_dict join personb_0_1997_dict join persona_0_dict join person_dict join adresse_dict

oder

select * from personc_0_1997_0_dict ,personb_0_1997_dict, persona_0_dict, person_dict, adresse_dict

bringt bei mir Mysql immer NULL Ergebnissmenge... Jedoch ist in den Tabellen was drinne.
Muss ich etwa für alle Tabellen ein einzelnes Select schreiben?
Ich plante eigentlich die Ergebnisse mit Where noch einzuschränken und dann gleich weiter zu verarbeiten im PHP.

Was mache ich da falsch?
between angels and insects

Eingeproggt

BeitragMo, Feb 19, 2018 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessant, dass diese Abfragen überhaupt ausgeführt werden. Wenn ich der Interpreter wäre, ich wüßte nicht was ich mit den Tabellen tun soll Wink

Ich nehme an, mit "ohne Verknüpfung" meinst du, dass "JOIN ... ON" nichts hilft? (Das wäre zu bevorzugen)

Dann würde ich "LEFT JOIN" (bzw. RIGHT JOIN) empfehlen. Wobei da seeeehr viele Daten rauskommen, das muss man irgendwie einschränken.
Da deine Beispieltabellen sehr ähnlich klingen, ist vielleicht auch "UNION" etwas für dich?

LG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Xeres

Moderator

BeitragMo, Feb 19, 2018 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannste schon machen, aber das führt zu jeder möglichen Kombination (mySQL):
table_a
Code: [AUSKLAPPEN]
key   value
1   one
2   two


table_b
Code: [AUSKLAPPEN]
key   value
1   1
2   2


Code: [AUSKLAPPEN]
SELECT * FROM table_a, table_b

Code: [AUSKLAPPEN]
key   value   key   value
1   one   1   1
2   two   1   1
1   one   2   2
2   two   2   2


Vielleicht ist das Ergebnis zu groß oder rechnet lange?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Jan_

Ehemaliger Admin

BeitragDi, Feb 20, 2018 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Halli Hallo,

jap das mit dem Kreuzprodukt habe ich heraus gefunden.
Was ich aber möchte:

Tab1: a1
Tab2: b1,b2

Code: [AUSKLAPPEN]

a1   null null
null  b1   b2


gibt es dafür einen Befehl/bzw. ein Join?
(Laut Uniion all, muss es die selben Collums haben)
EDIT:

SELECT CustomerName as Name FROM Customers
UNION ALL
SELECT SupplierName as Name FROM Suppliers
ORDER BY Name;

Damit könnte ich Felder verbinden. Das könnte mir recihen, falls niemand eine bessere Idee hat.
between angels and insects

count-doku

BeitragDi, Feb 20, 2018 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du sonst nicht beim FROM mehrere Tabellen angeben?

Code: [AUSKLAPPEN]
SELECT * FROM Customers, Categories;

Eingeproggt

BeitragDi, Feb 20, 2018 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das macht er ja...

@Jan_: Stöbere durch die verschiedenen JOIN-Varianten (LEFT, RIGHT,...). Soweit ich dich verstanden habe, ist das was du bis jetzt hast wirklich das beste. Es wird auch hier für genau dieses Szenario empfohlen: http://www.peterkropff.de/site...r_join.htm
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Xeres

Moderator

BeitragMi, Feb 21, 2018 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum möchtest du denn zwei Tabellen, die eigentliche keine Verbindung haben, in einer Abfrage haben?
Klingt eher nach einem Problem, dass sich in PHP mit mehreren Abfragen einfacher lösen lässt.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Jan_

Ehemaliger Admin

BeitragFr, März 02, 2018 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres, aber der SQL server soll optimal ausgelastet werden Smile

sieht nun gut aus:
Code: [AUSKLAPPEN]
select firma_0_dict_field as feld, firma_0_dict_description as description, firma_0_dict_hintdescription as hint, firma_0_dict_standardcontent as standard, firma_0_dict_cast as cast, firma_0_dict_analyzeable as anal, firma_0_dict_histable as hist, firma_0_dict_mandatoryfield as muss, firma_0_dict_visible as visible from firma_0_dict
union all
select kunde_dict_field as feld, kunde_dict_description as description, kunde_dict_hintdescription as hint, kunde_dict_standardcontent as standard, kunde_dict_cast as cast, kunde_dict_analyzeable as anal, kunde_dict_histable as hist, kunde_dict_mandatoryfield as muss, kunde_dict_visible as visible from kunde_dict
union all
select person_dict_field as feld, person_dict_description as description, person_dict_hintdescription as hint, person_dict_standardcontent as standard, person_dict_cast as cast, person_dict_analyzeable as anal, person_dict_histable as hist, person_dict_mandatoryfield as muss, person_dict_visible as visible from person_dict
union all
select
adresse_dict_field as feld,
adresse_dict_description as description,
adresse_dict_hintdescription as hint,
adresse_dict_standardcontent as standard,
adresse_dict_cast as cast,
adresse_dict_analyzeable as anal,
adresse_dict_histable as hist,
adresse_dict_mandatoryfield as muss,
adresse_dict_visible as visible
from adresse_dict
union all
select
abteilung_0_1997_dict_field as feld,
abteilung_0_1997_dict_description as description,
abteilung_0_1997_dict_hintdescription as hint,
abteilung_0_1997_dict_standardcontent as standard,
abteilung_0_1997_dict_cast as cast,
abteilung_0_1997_dict_analyzeable as anal,
abteilung_0_1997_dict_histable as hist,
abteilung_0_1997_dict_mandatoryfield as muss,
abteilung_0_1997_dict_visible as visible
from abteilung_0_1997_dict
between angels and insects

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group