select subselct 2 tabellen keine verknüpfung
ssql
- datenbank
Hallo, ich stehe auf dem Schlauch :(
es gibt 2 tabellen (users und persons)
in persons gibt es die felder: name, vorname, email, telefon etc.
in users gibt es die felder: language, uid, location, tzone etc.
von der tabelle persons brauche ich alle daten und von users benötige ich nur "uid".
Mein ansatz:
SELECT * FROM persons
order by name and vorname (Select uid from users
);
ich arbeite mit phpmyadmin. er gibt mir den fehler:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Select uid from users
) LIMIT 0, 30' at line 1
die 2 tabellen haben keine beziehung zueinander.
bitte um hilfe, komm nicht weiter. hab hier und im internet nichts zu meinem problem gefunden.
vielen dank
Mahlzeit ssql,
von der tabelle persons brauche ich alle daten und von users benötige ich nur "uid".
SELECT p.*
, u.uid
FROM persons p
, users u
Dass das - in Abhängigkeit der Anzahl der Datensätze - extrem inperformant ist und Du so zu *jedem* Personendatensatz *alle* User-IDs (bzw. umgekehrt) bekommst, sollte Dir klar sein.
die 2 tabellen haben keine beziehung zueinander.
Warum nicht? Welchen Sinn soll dann bitte die von Dir gewünschte Abfrage haben?
MfG,
EKKi
Mahlzeit EKKi,
vielen Dank Deine Abfrage klappt.
Nun ja zu Deiner Frage:
ist etwas schwierig zu beantworten.
Die Tabellen sind mir gegeben...daran kann ich nichts ändern (z.b. eine Beziehung zwischen den Tabellen erstellen).
Ist sozusagen meine Belegaufgabe.
Ich schreibe ein Perl-Programm, indem die Daten von A (MySQL) nach B(MSSQL) konvertiert werden. Die Daten von A werden täglich gepflegt. Die Daten von B nicht. Deshalb der Datenabgleich und Datenupdate, weil wir die Daten von B intern nutzen wollen und die Daten von A aber national genutzt werden. Vor dem Update müssen die Daten vorbereitet werden. Deshalb die Select-Abfrage.
Ich hoffe ich konnte es einwenig beschreiben.
Hi ssql!
Ich schreibe ein Perl-Programm, indem die Daten von A (MySQL) nach B(MSSQL) konvertiert werden. Die Daten von A werden täglich gepflegt. Die Daten von B nicht. Deshalb der Datenabgleich und Datenupdate, weil wir die Daten von B intern nutzen wollen und die Daten von A aber national genutzt werden. Vor dem Update müssen die Daten vorbereitet werden. Deshalb die Select-Abfrage.
Ich hoffe ich konnte es einwenig beschreiben.
Dein Ansatz ergibt überhaupt keinen Sinn. Ein Join zwischen zwei Tabellen, die nicht verknüpft werden können, ergibt lediglich ein "Kreuzprodukt" beider Tabellen. Jeder Datensatz aus Tabelle 1 wird mit jedem Datensatz aus Tabelle 2 verknüpft. Inwiefern soll das für Dein Problem, das mir immer noch relativ schleierhaft ist, zielführend sein?
mfG
Benjamin
Mahlzeit ssql,
Die Tabellen sind mir gegeben...daran kann ich nichts ändern (z.b. eine Beziehung zwischen den Tabellen erstellen).
Dann sind die Tabellen zwar einzeln vielleicht sinnvoll - ein Kreuzprodukt aus beiden ist jedoch in keinster Weise aussagekräftig.
Ist sozusagen meine Belegaufgabe.
... die offensichtlich nutzlos ist.
Ich hoffe ich konnte es einwenig beschreiben.
Du solltest Deinen Chef mal nach dem Sinn fragen. Wenn er Dir keine plausible Antwort geben kann: schick ihn her.
MfG,
EKKi
Eigentlich ist das Perl-Prog simple...
die Datenkonvertierung ist nicht weiter schwierig...
Die Tabelle auf der MSSQL-Seite hat aber eine Spalte mehr (eben für uid).
Alle Daten auf der MySQL-Seite, die ich brauche, sind in persons drin...nur eben diese "uid", die muss ich aus der Tabelle users ziehen (auch auf der MySQL-Seite).
Aber ich bin mir völlig bewusst, dass meine Aufgabe eig. für den A. ist...
Mahlzeit ssql,
Die Tabelle auf der MSSQL-Seite hat aber eine Spalte mehr (eben für uid).
Alle Daten auf der MySQL-Seite, die ich brauche, sind in persons drin...nur eben diese "uid", die muss ich aus der Tabelle users ziehen (auch auf der MySQL-Seite).
Ja, aber Du weißt doch gar nicht, welcher Datensatz aus der Tabelle "persons" zu welchem Datensatz aus der Tabelle "users" gehört - also *kannst* Du doch gar nicht "die richtige" UID finden.
Oder habe ich jetzt irgendwas überlesen oder nicht verstanden?
MfG,
EKKi
» Oder habe ich jetzt irgendwas überlesen oder nicht verstanden?
Nein Du hast nichts überlesen. Wie ich das herausfinden soll weiß ich auch noch nicht :(
Trotzdem vielen dank fürs feedback
Mahlzeit ssql,
» Oder habe ich jetzt irgendwas überlesen oder nicht verstanden?
Nein Du hast nichts überlesen. Wie ich das herausfinden soll weiß ich auch noch nicht :(
Dann solltest Du vielleicht *zuerst* genau das herausfinden: wie Du das herausfinden kannst. Ansonsten sind *alle* Deine weiteren Bemühungen nämlich von vornherein zum Scheitern verurteilt.
(Pferde zäumt man im Allgemeinen auch nicht von hinten auf.) :-)
MfG,
EKKi
moin,
Nein Du hast nichts überlesen. Wie ich das herausfinden soll weiß ich auch noch nicht :(
die tabellen klingen so, als wenn in beiden tabellen kundendaten stehen würden, zum beispiel vorname, nachname, postleizahl, etc. über solche felder musst du die beiden tabellen miteinander verknüpfen. aber am besten nicht über einen join, sondern über eine korrelierte unterabfrage. der vorteil davon ist, wenn es keine eindeutige zuordnung für die uid gibt, dann knallt es bei der unterabfrage und du bekommst es mit.
Ilja
Hi!
von der tabelle persons brauche ich alle daten und von users benötige ich nur "uid".
Mein ansatz:
SELECT * FROMpersons
order by name and vorname (Select uid fromusers
);
Am besten ist, du lernst erst einmal die Syntax mit einem Grundlagentutorial anstatt irgendwelche Phantasiesyntax zu probieren. Das führt zwar gemäß dem Infinite-Monkey-Theorem auch irgendwann zum Ziel, aber das kann dauern.
Einstieg in das Thema: Einführung in Joins
Lo!