JOINs mit mehreren Datensätzen verarbeiten

  • Themenstarter Themenstarter JOINFRAGENSEPP
  • Beginndatum Beginndatum
J

JOINFRAGENSEPP

Hallo zusammen,

ich habe folgendes Problem.

Ich habe eine SQL-Abfrage über mehrere(5) Tabellen.

Wenn ich jetzt z.b. so eine Tabellenstruktur habe:

Ich weiß die struktur im beispiel ist nicht gut aber mir is kein besseres Beispiel eingefallen und bei meinem Problem fehlt euch der sinn^^

Code:
Tabelle_1 (User)

id | name | partner
1 | Gilbert | 1

Tabelle_2 (Konten)

id | konto | user | ...
1 | Bank_X | 1 | ...
2 | Bank_Y | 1 | ...

Tabelle_3 (Partner)

id | name | ..
1 | FitzGerald | ...

Tabelle_4 (Freunde vom partner)

id | name | partner_id(der partner der aus tabelle 1 genommen wird) | wo_kennengelernt | ...
1 | Hubert| 1 | ...
2 | Hugo | 1
3 | Gordon| 1

Tabelle_5 (inventar)

id | gegenstand | ...
1 | Kühlschrank
2 | Schinken
3 | Katoffel

Ich habe bereits eine Abfrage die mir anhand der Userid (tabelle1) alle Infos holt

Nun gibt mir aber phpmyadmin das ganze etwa so aus: (nehme in dem beispiel nur 3 Tabellen weils sonst zu viel wird)

Code:
id | name | konto | gegenstand | ...
1 | Gilbert | Bank_X | Kühlschrank
1 | Gilbert | Bank_X | Schinken
1 | Gilbert | Bank_X | Katoffel
1 | Gilbert | Bank_Y | Kühlschrank
1 | Gilbert | Bank_Y | Schinken
1 | Gilbert | Bank_Y | Katoffel

Wenn ich aber jetz ein Objekt habe das die Daten verwalten soll will ich jetz alles in getrennte objekte speicher:

Code:
$row = fetch_object($db_result);

// Code das ich dieses Ergebnis erhalte:

$user_object

// 1 User object wo die infos drinstehen

$gegenstaende

// array mit so vielen gegenstandobjekten wie gegenstände, problem:
// Gegenstände kommen ja 2mal vor wegen den beiden konten

$konten

// selbes problem wie bei den gegenständen nur das sie halt 3 mal vorkommen

Versteht ihr mein Problem! also ich will die infos auftrennen und in objekte unterteilen ohne das ich daten öfter eintrage
 
Entweder du machst pro Stufe eine Abfrage oder du musst bei jedem Durchgang prüfen ob du das entsprechende Objekt bereits hast

PHP:
<?php

$array = array(
    array('id' => 1, 'name' => 'Gilbert', 'konto' => 'Bank_X', 'gegenstand' => 'Kühlschrank'),
    array('id' => 1, 'name' => 'Gilbert', 'konto' => 'Bank_X', 'gegenstand' => 'Schinken'),
    array('id' => 1, 'name' => 'Gilbert', 'konto' => 'Bank_X', 'gegenstand' => 'Katoffel'),
    array('id' => 1, 'name' => 'Gilbert', 'konto' => 'Bank_Y', 'gegenstand' => 'Kühlschrank'),
    array('id' => 1, 'name' => 'Gilbert', 'konto' => 'Bank_Y', 'gegenstand' => 'Schinken'),
    array('id' => 1, 'name' => 'Gilbert', 'konto' => 'Bank_Y', 'gegenstand' => 'Katoffel'));

foreach($array as $row){
    $gegenstand = $row['gegenstand'];  
    if($lastRow['konto'] != $row['konto']){
        $konto = (object) array('konto' => $row['konto']);
    }
    $konto->gegenstand[] = $gegenstand;    
    if($lastRow['id'] != $row['id']){
        $user = (object) array('id' => $row['id'], 'name' => $row['name']);
    }
    if($lastRow['konto'] != $row['konto']){
        $user->konto[] = $konto;
    }
    if($lastRow['id'] != $row['id']){
        $users[] = $user;
    }
    $lastRow = $row;
}

print_r($users);
?>
 
Zurück