2016-10-12 2 views
1

Ich habe zwei Resultsets A und Bwie man zwei Resultsets in mysql kombiniert oder zusammenführt?

Die Tabelle A wie folgt B wie dieses

+------+---------+----------+ 
| b_id | item no | location | 
+------+---------+----------+ 
| 1 |  101 | A1  | 
| 2 |  102 | A2  | 
| 3 |  103 | A3  | 
| 4 |  104 | A4  | 
+------+---------+----------+ 

sieht

+------+---------+------------+ 
| a_id | item no | total sold | 
+------+---------+------------+ 
| 1 |  101 |   23 | 
| 2 |  102 |   34 | 
| 4 |  405 |   54 | 
| 5 |  506 |   65 | 
| 6 |  104 |   23 | 
+------+---------+------------+ 

Die Tabelle sieht ich den Ausgang erreichen wollen als

folgt
+------+---------+------------+----------+ 
| a_id | item no | total sold | location | 
+------+---------+------------+----------+ 
| 1 |  101 |   23 | A1  | 
| 2 |  102 |   34 | A2  | 
| 4 |  405 |   54 | NULL  | 
| 5 |  506 |   65 | NULL  | 
| 6 |  104 |   23 | A4  | 
+------+---------+------------+----------+ 

Ich möchte die Spalte 'LOCATION' an Tabelle A anhängen und t anzeigen Der Standortwert für jedes Element, das in Tabelle B vorhanden ist. Wenn das Element Nr. in Tabelle A keinen Standortwert aufweist, muss der Standortwert NULL (d. h. leer) sein.

Da ich ein Anfänger bin, weiß ich nicht, wie man es erreicht. Ich habe versucht, UNION zu verwenden, aber ich konnte keine richtige Abfrage schreiben

+1

nein, Sie wollen keine Union. Sie möchten ein [Join] (https://en.wikipedia.org/wiki/Join_ (SQL)). –

+0

Wie verhält sich der HTML-Code zu MySQL? Sie brauchen wahrscheinlich nur einen regulären Outer Join, Union ist eine komplett andere Sache –

+0

Ich weiß nicht, wie man eine Ergebnismenge im Tabellenformat im Stack-Überlauf, also habe ich einfach HTML-Code verwendet, um die Daten ordnungsgemäß in der Tabelle anzuzeigen –

Antwort

1

Was Sie suchen, ist ein Join. Insbesondere ein Left Outer Join, so dass Sie alle Ergebnisse aus Ihrer linken Tabelle (TableA) und nur die Ergebnisse aus Ihrer rechten Tabelle (TableB) erhalten, die übereinstimmen.

Wenn eine Join-Angabe verwenden Sie die ON Klausel die DB zu erzählen, die Felder zwischen den Tabellen beziehen:

SELECT 
    a_id, 
    a.itemno, 
    a.totalsold, 
    b.location 
FROM 
    tableA 
    LEFT OUTER JOIN tableB ON 
     tableA.itemno = tableB.itemno 
+0

Seine Arbeit. Vielen Dank –

1

sollten Sie LEFT JOIN verwenden (links führen, dass Sie NULL-Werte erhalten wollen, wenn der Datensatz nicht ist gefunden in der zweiten Tabelle)

Verwandte Themen