Ich habe eine Frage.Wie bekomme ich ein Array von DB
ich einen Tisch table1
wie diese haben:
ID | email | first_name | last_name
1 | bla | bladibla | bladibladibla
Und damit habe ich eine andere Tabelle table2
:
ID | table1_id | name | value
1 | 1 | foo | bar
2 | 1 | foo1 | bar1
3 | 1 | foo2 | bar2
Meine Frage: Wie erhalte ich die Ergebnisse in PHP so?
$array = [
id => 1,
email => bla,
first_name => bladibla,
last_name => bladibladibla,
data => [
[
name => foo,
value => bar
],
[
name => foo1,
value => bar1
],
[
name => foo2,
value => bar2
],
]
]
Meine Lösung, die für jetzt funktioniert, aber scheint nicht der beste Weg, es zu handhaben.
Ich habe das jetzt, aber es scheint nicht der richtige Weg, es zu tun, weil in der ersten foreach-Schleife, es ist eine Abfrage an die DB für jede Zeile in Tabelle 1 zu schießen.
$query = "SELECT * FROM `table1`";
$results = $wpdb->get_results($query);
foreach($results as $result) {
$otherQuery = "SELECT * FROM `table2` WHERE `table1_id` = " . $result['id'];
$table2Results = $wpdb->get_results($otherQuery);
foreach($table2Results as $table2Result) {
// save all data in a new array just like I want it.
}
}
Sie suchen nach einer [JOIN-Abfrage] (http://dev.mysql.com/doc/refman/5.7/en/join.html). In diesem Fall wäre eine linke Verknüpfung ausreichend. –
@GeorgeCummins, ich bereits Ich habe versucht, eine Join-Abfrage, aber dann bekomme ich doppelte Werte aus Tabelle 1. – Refilon
Sie erhalten Duplikate, weil Sie eine 'LINKE JOIN' anstelle von' INNER JOIN' versuchen. Versuchen Sie 'SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.table1_id'. – Anthony