2016-11-09 4 views
0

Ich möchte wissen, was ist Zwei-Wege-Tabellen in SQL?Wie liest man Zweiwege-Tabellen?

Und wie kann ich diese Zweifach-Tabellen

+0

[Dieser Beitrag] (http://stackoverflow.com/questions/6040991/select-a-two-way-table-in-mysql) helfen können. – Vikrant

+0

Sprechen Sie über Datenbankvererbung? kannst du klarstellen ..... – PSabuwala

+0

eigentlich bin ich neu in der Datenbank, also weiß ich nicht, was Datenbankvererbung ist. Kürzlich in einem Interview frage mich ein Interviewer über Zwei-Wege-Tische – johnwalker10

Antwort

1

Zwei-Wege-Tabellen gibt keine Möglichkeit, Speicherung Daten lesen, aber von Daten. Es sagt nichts darüber aus, wie die Daten gespeichert sind.

Lassen Sie sich sagen, dass wir speichern Personen zusammen mit ihrem IQ und das Land, in dem sie leben Die Tabelle wie folgt aussehen:.

 
name   iq country 
John Smith 125 GB 
Mary Jones 150 GB 
Juan Lopez 150 ES 
Liz Allen 125 GB 

Die Zwei-Wege-Tabelle wäre die Beziehung zwischen IQ und Land zu zeigen:

 
    | 125 | 150 
---+------+---- 
GB | 2 | 1 
ES | 0 | 1 

oder

 
    | GB | ES 
----+-----+--- 
125 | 2 | 0 
150 | 1 | 1 

um diese Daten aus der Datenbank abgerufen werden Sie könnten diese Abfrage schreiben:

select iq, country, count(*) 
from persons 
group by iq, country; 

SQL ist zum Abrufen von Daten gedacht; es ist nicht wirklich wichtig, sich um die Präsentation, das Layout zu kümmern. Sie würden also ein Programm schreiben (in PHP, C#, Java, was auch immer), das die Anfrage an die Datenbank sendet, die Daten empfängt und ein GUI-Grid in einer Schleife füllt.

In seltenen Fällen kann SQL das Layout selbst bereitstellen, d. H. Sie erhalten die Daten in Spalten und Zeilen. Dies ist, wenn die Attribute einer Dimension im Voraus bekannt sind. Dies ist normalerweise bei IQs oder Ländern nicht der Fall, wie im Beispiel angegeben (d. H. Sie hätten nicht gewusst, welche Länder und welche IQs in der Tabelle vorhanden sind, wenn ich Sie nicht angezeigt hätte). Aber natürlich hätten Sie zuerst entweder die Länder oder die IQs abrufen und dann die Hauptabfrage dynamisch erstellen können (mit bedingter Aggregation oder Pivot). Ein anderer Fall, in dem Werte im voraus bekannt sind, ist boolesch, z. eine Flagge in der Personentabelle, um zu zeigen, ob eine Person obdachlos ist. Wenn Sie Ergebnisse für wie viele Obdachlose in welchen Ländern wünschen, könnten Sie leicht eine Abfrage mit zwei Spalten für Obdachlose und nicht Obdachlose schreiben.

Wie bereits erwähnt: dass Sie Daten in einer Zwei-Wege-Tabelle anzeigen können, sagt nichts darüber aus, wie diese Daten gespeichert werden. Oben habe ich dir ein Beispiel mit einem Tisch gezeigt. Nehmen wir an, Sie haben Geschäfte in vielen Städten und möchten wissen, in welchen Städten dünnere oder dickere Menschen leben. Sie entscheiden, welche T-Shirt Größen Sie in welchen Städten verkaufen. Sie nehmen also die Bestellungen Ihrer Kunden entgegen, schauen sich die Kunden und die Städte an, in denen sie leben. Sie sehen auch die Bestelldetails und die Artikel nach, auf die sie sich beziehen, und nehmen dann alle Artikel vom Typ T-Shirt mit. Es sind viele Tabellen beteiligt, aber das Ergebnis ist wiederum eine zweiseitige Tabelle, die die Beziehung zweier Attribute zeigt. Z. B:

 
city  | S | M | L | XL 
------------+-----+-----+-----+----- 
New York | 5% | 8% | 7% | 10% 
Los Angeles | 10% | 7% | 7% | 8% 
Chicago  | 1% | 4% | 6% | 11% 
Houston  | 2% | 2% | 5% | 7%