romacron
 Themenersteller
 JDev Xer
 Content Gott (1224 Beiträge)
  Mysql abfrage (Join) in PHP Array() 
Hallo an die Cracks! Sehe den Wald vor lauter Bäumen nicht. 
Mysql , PHP 
Es befinden sich 2 Tabellen in der gleichen Datenbank. 
Hier das vereinfachte Modle 
Table 1 (die Haupttabelle) 
| id(primary) | category_name | 
 1 tolle_cat 
 2 super_cat 
Table 2 (die untertabelle) 
| id | main_cat_id | content | 
 1 1 beitrag1.. 
 2 1 beitrag2 
 3 2 beitrag3 
t1.id=t2.main_cat_id 
Die Abfrage als Beschreibung: 
Frage alle Werte der Tabelle 1 ab und sortiere aus tabell2 die dazugehörigen Inhalte mit hinein. 
die Übergabe an php sollte dann so aussehen: 
$cat_array [ id ] 
$cat_array [ id ][inhalte der kategory aus tabelle 2 die zu dieser Kategorie gehören] 
quasi Table2 unter den ersten Table druntersortieren und dabei einen index nach rechts 
Vielen Dank für die Mühe. 
Gruss Roman 
masa8
 Selbständig
 Selbständig
 Content Gott (1001 Beiträge)
 Hallo Roman, 
nur mal so auf die schnelle. 
t1=a, t2=b 
select a.id, b.id, b.content from t1 a, t2 b where a.id=b.main_cat_id 
Das Ergebnis sollte dann sein: 
1. 1. beitrag1 
1. 2. beitrag2 
2. 3. beitrag3 
Gruß Matthias
 Mein Blog über Wordpress, SEO, interne Verlinkung und mehr 
alles-mit-links
BLACKINK Webkatalog 20-25 Backlinks "Lifetime" 
willmann
 TYPO3-Freelancer.
 TYPO3-Freelancer.
 Guru (246 Beiträge)
 das kann so nicht gehen. Dafür brauchst Du zwei Abfragen, weil Du in die 1:n-Beziehung der Tabellen nicht so ohne weiteres in diese Richtung gehen kannst (andersherum würde es über einen LEFT JOIN gehen). 
Dann also (PSEUDOCODE): 
SELECT id FROM tbl1; 
for each (id) { 
 SELECT * FROM tbl2 WHERE main_cat_id = $id 
 for each content as i{ 
 $cat_array[id][i] = $result 
 } 
} 
das kann bei vielen Kategorien und vielen Einträgen in tbl2 aber ein paar Sekunden dauern. Was willst Du eigentlich genau damit erreichen - für mich hört sich das nicht nach dem optimalen Weg zu irgendwas an... 
Marc
 Marc Willmann. TYPO3-Freelancer. 
http://www.marc-willmann.de 
romacron
 JDev Xer
 Content Gott (1224 Beiträge)
 Jepp Vielen Dank, das ist klar. 
Nur wird bei dieser Abfrage quasi nur Table b ausgegeben 
Ziel ist aber 
Tolle_cat 
 | _ beitrag1 
 | _ beitrag2 
Super_cat 
 |_ beitrag3 
...den Index für die Unterkategorien um 1 nach rechts verschieben aber die Oberkategorie als "Standalone" behalten 
romacron
 JDev Xer
 Content Gott (1224 Beiträge)
 Vielen Dank Marc! 
Das wollte ich vermeiden. Aber gut dass ich weiß, dass es keine andere Lösung gibt. 
Habe das vorher auch immer so gemacht, mir tat es nur in der seele weh das nicht auf einen Rutsch zu machen. 
Was will ich machen? 
für jeden "Haupteintrag" 
eine Zeile Ausgeben mit den "header_daten der Kategorie" 
in die 2. Zeile kommen dann die dazugehörigen Inhalte von t2 
wenn ich mir die Übersicht lade, möchte ich sofort die unterkategorien über deren index klicken können. 
// Marc, ich wusste das Du antwortest 
peete
 Webdesigner
 Neuling (2 Beiträge)
 Hallo Roman, 
grundsätzlich ist es natürlich möglich. Man könnte innerhalb einer SP in einem ersten Cursor die Datensätze der Tabelle eins durchlaufen und in einem zweiten Cursor verschachtelten Cursor die der zweiten Tabelle. Die Werte werden innerhalb des Cursors in eine temporäre Tabelle gespeichert und am Ende von der Prozedur zuückgegeben. 
Ich hoffe, dass dir diese Lösung hilft. Meiner Meinung nach ist es aber einfacher es im PHP Code selbst zu machen. 
Gruss, Oscar
 www.writeadd.com - The Collaborative Writing Community for Authors 
romacron
 JDev Xer
 Content Gott (1224 Beiträge)
 Hallo peete! 
Vielen Dank, dachte ich hätte einen Befehl nicht im Kopf. tmpTable kommt leider nicht in Frage. 
 Das Seitenreport Forum hat aktuell 5278 Themen und 36112 Beiträge.
 Insgesamt sind 48389 Mitglieder registriert. 
Beitrag erstellen
EinloggenKostenlos registrieren