Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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).

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

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

Geschrieben

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!?

Geschrieben
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

Geschrieben

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

}

Geschrieben
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"];

}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...