/PHP
xpfreund
- datenbank
Hallo,
Gibt es die Möglichkeit aus enem Resultset in PHP aus einer Mysql-Abfrage, noch ein Select zu nehmen?
Bsp.:
$alles= mysql_query("Select * From tabelle");
$unterteilung= mysql_query("Select from $alles where ID=5");
Ausgabe: Ein Resultset mit allen benötigten Einträgen und eins, wo ID=5 ist.
Hintergrund: Bei Ausgabe der Daten sollen die Spalten nicht angezeigt werden, bei denen in keinem gefundenen Datensatz etwas drinsteht.
gruß aus Senftenberg am See
hi,
Gibt es die Möglichkeit aus enem Resultset in PHP aus einer Mysql-Abfrage, noch ein Select zu nehmen?
Besteht die Möglichkeit, dass du das noch mal in verständlich formulierst?
Bsp.:
$alles= mysql_query("Select * From tabelle");
$unterteilung= mysql_query("Select from $alles where ID=5");
$alles wäre, sofern die erste Query erfolgreich ist, vom Typ Resource-ID.
Nein, die als Textliteral irgendwo einzufügen, ergibt überhaupt keinen Sinn.
Ausgabe: Ein Resultset mit allen benötigten Einträgen und eins, wo ID=5 ist.
Letzteres ist in "Allen" doch sowieso schon enthalten.
Wenn es dich besonders interessiert - dann frage doch einfach während der Verarbeitung der Daten im Script ab, ob die ID des aktuellen Datensatzes gleich 5 ist.
Hintergrund: Bei Ausgabe der Daten sollen die Spalten nicht angezeigt werden, bei denen in keinem gefundenen Datensatz etwas drinsteht.
Auch die Formulierung ergibt m.E. wieder wenig Sinn.
Und wo der Zusammenhang zu einer bestimmten ID bestehen soll, wird auch nicht im geringsten klar.
gruß,
wahsaga
Hallo,
Also die Abfrage bringt das nötige her.
$where = "project = '$projekt_ID'";
$query1 = db_query("select todo.ID, remark, B.nachname as to_nachname, todo.note, todo.anfang, deadline, contacts.nachname, todo.status
from users as A, todo
left join users B on B.ID = ext
left join projekte on projekte.ID = todo.project
left join contacts on contacts.ID = todo.contact
where (todo.acc like 'system' or ((todo.von = $user_ID or ext = $user_ID or
todo.acc like 'group' or todo.acc like '%"$user_kurz"%') and todo.gruppe = $user_group)) and
A.ID = todo.von and
$where
order by deadline,todo.datum desc");
Jetzt folgt die direkte Ausgabe der Daten durch eine Schleife. Ich will aber bevor die Schleife alles ausgibt, dass alle Spalten ausgeblendet werden, die in sämtlichen gefundenen Datensätzen keinen Inhalt haben.
Deshalb wollte ich der gesamten Abfrage in einer Schleife jeweils noch ein where spalte="" hinzufügen und überall wo die Anzahl der in query1 gefundenen Datensätze übereinstimmt, würde die Spalte ausgeblendet werden.
gruß aus Senftenberg am See
Hallo,
Ich will aber bevor die Schleife alles ausgibt, dass alle Spalten ausgeblendet werden, die in sämtlichen gefundenen Datensätzen keinen Inhalt haben.
Dann check doch vor dem Ausgeben einfach bei den Datensätzen, ob alle Felder leer sind oder nicht.
Gruß,
Click
Hallo!
Gibt es die Möglichkeit aus enem Resultset in PHP aus einer Mysql-Abfrage, noch ein Select zu nehmen?
Meines Wissens nach nicht.
Ausgabe: Ein Resultset mit allen benötigten Einträgen und eins, wo ID=5 ist.
Hintergrund: Bei Ausgabe der Daten sollen die Spalten nicht angezeigt werden, bei denen in keinem gefundenen Datensatz etwas drinsteht.
Ganz hab ich nicht kapiert was du möchtest.
Es sollen also alle Records bei denen ID=5 ist ausgegeben werden. Also wahrscheinlich nur eine Zeile. Hiervon möchtest du nur jene Spalten ausgeben in denen irgendwo in irgendeinem Datensatz ein Wert gespeichert ist. Dh jene Spaten die in allen Datensätzen NULL sind, sollen nicht angezeit werden? Korrekt?
Wenn dem so ist, dann ist das nicht ganz trivial aber locker machbar.
Den Algorithmus überleg ich mir jetzt aber nicht, da ich mir nicht sicher bin, ob das überhaupt das ist was du möchtest. :-)
Außerdem kommt es noch darauf an wieviele Datensätze du erwartest. Wenn die Tabelle sicher nicht über 1000 Zeilen hat, hättte ich einen anderen Algorithmus im Hinterkopf als wenn die Tabelle 1.000.0000 Zeilen beinhaltet.
mfg
frafu
Hallo,
Es sollen also alle Records bei denen ID=5 ist ausgegeben werden. Also wahrscheinlich nur eine Zeile. Hiervon möchtest du nur jene Spalten ausgeben in denen irgendwo in irgendeinem Datensatz ein Wert gespeichert ist. Dh jene Spaten die in allen Datensätzen NULL sind, sollen nicht angezeit werden? Korrekt?
OK ID=5 ist ein schlechtes Bsp., das sollte aber auch nur ein Bsp. sein, also bspw. wäre damit auch Spalte von=7 gemeint.
Wenn dem so ist, dann ist das nicht ganz trivial aber locker machbar.
Den Algorithmus überleg ich mir jetzt aber nicht, da ich mir nicht sicher bin, ob das überhaupt das ist was du möchtest. :-)
Außerdem kommt es noch darauf an wieviele Datensätze du erwartest. Wenn die Tabelle sicher nicht über 1000 Zeilen hat, hättte ich einen anderen Algorithmus im Hinterkopf als wenn die Tabelle 1.000.0000 Zeilen beinhaltet.
Vielleicht 3 oder mehr bis max. 10 aber viel mehr wahrscheinlich nicht.
Ich nehme aus 100 Datensätzen, die zum Anzeigen raus und aus denen sollen dann alle Spalten ausgeblendet werden, die in den 10 Datensätzen komplett leer sind.
gruß aus Senftenberg am See
Hallo!
Den Algorithmus überleg ich mir jetzt aber nicht, da ich mir nicht sicher bin, ob das überhaupt das ist was du möchtest. :-)
Außerdem kommt es noch darauf an wieviele Datensätze du erwartest. Wenn die Tabelle sicher nicht über 1000 Zeilen hat, hättte ich einen anderen Algorithmus im Hinterkopf als wenn die Tabelle 1.000.0000 Zeilen beinhaltet.
Vielleicht 3 oder mehr bis max. 10 aber viel mehr wahrscheinlich nicht.
Ich nehme aus 100 Datensätzen, die zum Anzeigen raus und aus denen sollen dann alle Spalten ausgeblendet werden, die in den 10 Datensätzen komplett leer sind.
Jetzt bin ich völlig ausgestiegen.
Oben schreibst du, du rechnset mit max. 3-10 Datensätze in der Tabelle und weiter untern sprichst du plötzlich von 100 und dann plötzlich von 10.
mfg
frafu
Hallo,
Gibt es die Möglichkeit aus enem Resultset in PHP aus einer Mysql-Abfrage, noch ein Select zu nehmen?
So wohl nicht, denke ich.
Bsp.:
$alles= mysql_query("Select * From tabelle");
$unterteilung= mysql_query("Select from $alles where ID=5");
Der einfachhalthalber würde ich das dann wohl eher so schreiben:
$unterteilung = mysql_query("SELECT * FROM tabelle WHERE ID=5");
Man kann natürlich auch mit einer while-Schleife durch $alles gehen und sich dort nur die Datensätze mit der ID=5 raussuchen.
Gruß,
Leeloo
Hello,
FYI: Ich finde die Idee, so etwas zu machen, nicht so ganz abwegig. Zwar würde ich auch zu einem einzelnen Statement neigen, das so wenig wie möglich an Daten liefert, aber nichts desto trotz stellen andere Technologien, beispielsweise DAO (bei ADO weiß ich es gerade nicht), Recordsets zur Verfügung, auf deren Basis man weitere Recordsets mit Filterkriterien öffnen kann. Das könnte z.B. Sinn machen, wenn es ein vorliegendes Prepared Statement gibt, das man nutzen muss, von dessen Ergebnismenge man allerdings nur eine gewisse Untermenge braucht.
MfG
Rouven