Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

stellt die Kombination PHP/MYSQL die Möglichkeit bei einer Abfrage, auf ein

result(r1) eine neue Abfrage zu machen?

DB <-- (abfrage1)--> r1 <--(abrfrage2)--> r2

Gruß

S.E.

MySQl selbst stellt seit V4.1.x die Möglichkleit von Subselects zur Verfügung. also


SELECT Bla from

(SELECT * from Blubb) as T1

Das ist aber denke ich nicht das was du willst, und nein, PHP selbst bietet sowas nicht (ich kenne auch keine andere Sprache die das tut, .Net 3.5 soll glaub ich sowas in der Richtung bieten, kenn ich aber nicht genau).

hmpf schade.

man könnte r1 als objekt speichern und darauf dann erneut selektieren?

Ich denk aber das der Aufwand sich dafür nicht lohnen würde.

Möglichweiße bringt eins der großen Frameworks was mit?

Ich schau mir mal die mysql-klassen von PEAR und Zend an.

bedenke, wenn du eine vollständige SQL-Abfrage in PHP lädst und dann weiter filtern willst, bedeutet das 100% der SQL-Daten in den zwischenspeicher von PHP zu laden, was extrem an ressourcen frisst.

ja ich weiß Auin *gg*

hatte ganz kurz sogar daran gedacht r1 in eine Array zu legen und dann mit Array-Funktionen zu arbeiten.

Hier die Abfrage:

SELECT rv_kunden.ku_id, rv_kunden.ku_kdnr, rv_kunden.ku_name1, rv_kunden.ku_ort,
rv_kunden_anspr.ka_id, rv_kunden_anspr.ka_nname
FROM rv_kunden JOIN rv_kunden_anspr
ON rv_kunden.ku_id = rv_kunden_anspr.ku_id[/PHP]

Man stelle sich vor in rv_kunden(t1) stehen Kundenstammdaten, in rv_kunden_anspr(t2) Ansprechpartner die mit dem Kunden über einen Schlüssel verknüpft sind. Das ganze soll in einer Liste (table) dargestellt werden.

t1.ku_kdnr | t1.ku_name1 | t1.ku_ort | t2.ka_nname

12345 | Scheinfirma | Stuttgart | (<select>)Mayer, Schmidt, Calypso (</select>)

... nächste Firma

Für jede Firma gibt es also eine Zeile in der Liste.

...und irgendwie steh ich grad auf der Leitung.

In meiner Abfrage hab ich ja eigentlich alle Daten, ich kann sie atm nur nicht so verarbeiten wie ichs gerne hätte.

Kann ich nicht auf MYSQL-Ebene der "Abfrage" einen Namen geben?

(a1) AS wusel;

SELECT * FROM wusel;

Hallo,

je nachdem wie Du es handhaben willst, entweder View oder temporäre Tabelle. Aber bei den temporären Sachen ist wichtig, dass sie automatisch gelöscht werden, wenn die Verbindung zur Datenbank beendet wird (evtl persistente Verbindungen verwenden und diese dann auch wieder sauber trennen).

Vielleicht hilft es, wenn Du mal postest, wie Du die Daten aus dem Resultset weiter verarbeitet willst.

HTH Phil

Amstel, dein Tipp hat mir den Tag gerettet!! :uli

Ich nehm mal an das diese erzeugte "VIEW-Table" so lange existiert wie die Verbindung des Clients zur DB besteht? Danach wird sie entfernt? Handelt MySQL das so das jeder Client, wenn nötig, eine eigene VIEW-Table zur Laufzeit bekommt?

Edit:

Okay, die VIEW-Table muss wohl mit einem eindeutigen Namen deklariert werden!?

j

Hier die Abfrage:

SELECT rv_kunden.ku_id, rv_kunden.ku_kdnr, rv_kunden.ku_name1, rv_kunden.ku_ort,
rv_kunden_anspr.ka_id, rv_kunden_anspr.ka_nname
FROM rv_kunden JOIN rv_kunden_anspr
ON rv_kunden.ku_id = rv_kunden_anspr.ku_id[/PHP]

...

t1.ku_kdnr | t1.ku_name1 | t1.ku_ort | t2.ka_nname

12345 | Scheinfirma | Stuttgart | (<select>)Mayer, Schmidt, Calypso (</select>)

... nächste Firma

Moin,

wenn ich das richtig sehe, dann hast du doch schon alle Daten beisammen, oder? Es geht also nur um die Ausgabe in HTML ...

Wie wäre es mit einer geeigneten Sortierung schon im SQL, also zB "order by rv_kunden.ku_name1, rv_kunden_anspr.ka_nname" und dann ungefähr so (Achtung, wie immer ungetestet):

[PHP]
$kunde_alt = "";
echo "<TABLE><TR><TD>Deine Überschriften...";
while ( $ds = mysql_fetch_array($rs, MYSQL_BOTH) )
{
if ( $ds['ku_name1'] != $kunde_alt )
{
$kunde_alt = $ds['ku_name1'];
echo "</TD></TR><TR>";
echo "<TD>" . $ds['ku_kdnr'] . "</TD>";
echo "<TD>" . $ds['ku_name1'] . "</TD>";
echo "<TD>" . $ds['ku_ort'] . "</TD>";
echo "<TD>";
}
else
{
echo $ds['ka_nname'] . ", ";
}
}
echo "</TD></TR></TABLE>";

Im Prinzip sollte das reichen.

Reinhold

Ich nehm mal an das diese erzeugte "VIEW-Table" so lange existiert wie die Verbindung des Clients zur DB besteht? Danach wird sie entfernt?

nein, darüber hinaus, bis sie geDROPt wird.

s'Amstel

Alles klar. Besten Dank!:)

wenn du die Daten für die Anzeige brauchst, "nicht" um nach Ansprechpartnern zu filtern oder zu sortieren, dann mach doch 2 Abfragen draus

select kunde

foreach kunde

{

select kontakt

echo kunde, echo kontakt

}

wenn du die Daten für die Anzeige brauchst, "nicht" um nach Ansprechpartnern zu filtern oder zu sortieren, dann mach doch 2 Abfragen draus

select kunde

foreach kunde

{

select kontakt

echo kunde, echo kontakt

}

Also auf den ersten Blick würde ich sagen, ein Join ist da besser.


SELECT Konde, Kontakt FROM KUNDE JOIN KONTAKT ON (KUNDE.ID = KONTAKT.KUNDE_ID) 

Und dann:


$Kunde = "";


while ($row = mysql_fetch_Bla....)

{

  if ($Kunde != $row["Kunde"])

    echo "Kunde: ". $Kunde;

  echo "Kontakt:" .$row["Kontakt"];

}

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.