2012-04-15 17 views
0

Ich finde es wirklich schwer zu erklären, was vor sich geht, ich werde mein Bestes geben. Wir müssen einen wirklich einfachen Browser mit wirklich einfachen Favoriten + History-Fähigkeiten erstellen, und dazu müssen wir sie beide in ein DataSet importieren und sie von dort verwenden.Ein DataAdapter, zwei verschiedene Tabellen

Das Wissen, das ich habe, sollte genug sein, aber ich würde es wirklich gerne effizienter und sauberer machen. In der Datenbank habe ich 3 Tabellen, eine für Benutzer, eine für Favoriten und eine für Geschichte, dies ist mit FK verbunden usw. Ich möchte eine Abfrage, die mir jede Fav + History URL zurückgibt, die ein Benutzer gespeichert hat. Das ist, was ich habe jetzt:

SELECT u_id, u_user, h_url, f_url FROM Users, Favorites, HistoryWHERE u_id = h_id AND u_id = f_id AND u_id = 1 

Dies ist nicht das Ergebnis, das ich bin auf der Suche nach, ich will 2 Combobox füllen, eine mit den Favoriten und einen mit der Geschichte, die sowohl von der Person, die angemeldet ist in diesem Moment.

Ich weiß, das sollte mit Join arbeiten, aber innere und äußere beide geben zu wenig oder zu vielen Ergebnissen, und links und rechts verbinden scheinen nicht für mich auch nicht, aber ich kann nicht erklären, warum. : p Ich bin semi-neu zu verbindet BTW.

Antwort

0

Es klingt wie Sie eigentlich zwei einfache Abfragen möchten, eine für Favoriten und eine für die Geschichte. Beide Abfragen müssen nur eine where Klausel haben, die den Benutzer begrenzt, für den die Ergebnisse zurückgegeben werden.

SELECT f.url 
FROM Favorites f 
WHERE f.userID = 1 

SELECT h.url 
FROM History h 
WHERE h.userID = 1 
+0

Ich weiß das, ich habe es auch so gemacht. Aber warum holen Sie 2 verschiedene Ergebnisse, wenn Sie es in eine Abfrage einfügen können? Die ganze Idee ist, es mit einer Anfrage zu tun. – Gideon

+0

@ Gideon, warum machen Sie eine komplizierte Abfrage, die nie ganz das tun wird, was Sie wollen, wenn es zwei einfache Abfragen gibt, die genau das tun, was Sie wollen? Was ist das Problem mit zwei Anfragen? In Ihrem Beispiel müßten Sie die Ergebnisse von einer einzigen Anfrage trennen, aber nachdem Sie die Mühe gemacht haben, sie unbehaglich zusammen zu zwingen! – chezy525

+0

Hmm, das scheint richtig zu sein. Dachte, es würde die ganze Sache verlangsamen, aber rate mal, das ist nicht wahr? – Gideon

0

Wenn Sie zwei Comboboxen füllen möchten, würde ich vorschlagen, dass Sie zwei separate Listen abrufen, eine für jede Combobox. Dann können Sie jede Liste separat an ihre Combobox binden.

Obwohl DataSets nicht die beste Wahl sind, denke ich, dass sie in dieser Situation für Sie arbeiten werden. Ihr Ziel wird sein, zwei SQL-Anweisungen zu schreiben, einen für jede Liste. Anschließend fügen Sie die Abfrageergebnisse in DataTables ein, die in einem DataSet enthalten sind. Eine DataTable kann an eine Combobox angehängt werden.

Verwandte Themen