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
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.
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 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.
Beitrag erstellen
EinloggenKostenlos registrieren