kenn mich noch nicht so gut aus in sql, hab bereits gegoogelt zu meinem problem leider ohne ergebnis das mit weiterhelfen könnte
habe eine datenbank erstellt mit der tabelle "user" (name,adresse,...)
jetzt möchte ich teile der datensätze als "eigenen datensatz" zusammenfassen, also:
Huber Martin
Huber Martina
Huber Franz
sollen zusammengefasst werden als Familie Huber.
d.h. in der Tabelle "user" soll dann stehen
Familie Huber
Huber Martin
Huber Martina
Huber Franz
ich hoff ich hab es verständlich beschrieben mein problem
anfängerfrage
-
-
was meinst du mit "zusammenfassen"?
so wie ich das verstanden habe, wird ein neuer datensatz erstellt, der den namen "familie huber" hat...aber was soll bei den einzelnen spalten stehen?
wenn es dir nur um den zusammenhang geht, dh dass man über "familie huber" alle familienmitglieder findet, kanst du ja eine weitere spalte einführen, die dann die familien-id speichert. -
Folgendes möchte ich mal sagen: Es ist nicht wichtig WIE die datensätze in der Tabelle stehen (also eine struktur muss schon eingehalten werden), es ist nur wichtig wie du es dann zB in einer PHP seite anzeigen kannst - diesen Ansatz nehme ich als gegeben.
Also da gibts dann meiner meinung nach 2 Lösungsansätze:
Der erste einfache, wenn es dir "nur" um das anzeigen auf ner php seite geht: du definiertst das durch ein sql query also -
zB.:
Somit werden alle rückgabenwerte gruppiert nachname und du hättest den effekt.Oder Zweitens, wenn du die Tabllenstruktur dahingehend optimieren willst:
Erstelle:
Tabelle 1: Familie
Tabelle 2: Mitglieder
(ich nehme an du kennst den Syntax für CREATE TABLE)In der ersten Tabelle stehen dann alle Familiennamen und diverse Infos über die ganze Familie. In Mitglieder stehen dann Name und als Key der Nachname (oder je nachdem was du als key in Famlien defineiren willst - nachname wäre wohl nicht sehr effizient). Weiters kannst du noch eine beziehung zwischen den beiden keys definieren um regeln zB wie für "on update" oder "on delete" damit die tabellen immer konsistent bleibt.
Du müsstes dann aber auch mit der entspr. SQL Query zB. -
Was hat einen GROUP BY-Klausel ohne Aggregatfunktion überhaupt für einen Sinn? AFAIK funktioniert das nicht mal bei allen SQL-Servern (z. B. PostgreSQL).Wenn er nur die verschiedenen Familiennamen haben will, kann er das DISTINCT-Keyword verwenden (SELECT DISTINCT nachname FROM user). Ansonsten die Liste nach dem Nachnamen sortieren.
Mit einer einzigen SQL-Query wird's vermutlich nicht möglich sein, aus einer Tabelle alle verschiedenen Nachnamen (Huber, Meier, Müller) auszulesen und dann für jeden gefundenen Namen einen neuen Eintrag ("Familie Huber", "Familie Meier", "Familie Müller") zu machen; mal ganz abgesehen davon, daß ich nicht verstehe, wozu das gut sein soll. Vermutlich kann man es aber irgendwie mit geschachtelten Queries zusammenbauen.
-
Mit einer einzigen SQL-Query wird's vermutlich nicht möglich sein, aus einer Tabelle alle verschiedenen Nachnamen (Huber, Meier, Müller) auszulesen und dann für jeden gefundenen Namen einen neuen Eintrag ("Familie Huber", "Familie Meier", "Familie Müller") zu machen; mal ganz abgesehen davon, daß ich nicht verstehe, wozu das gut sein soll. Vermutlich kann man es aber irgendwie mit geschachtelten Queries zusammenbauen.PHP Bsp Code
PHP
Alles anzeigen@mysql_connect(host,user,password) or die("Verbindung mit dem SQL Server beim Verbinden fehlgeschlagen"); mysql_select_db(database) or die("Verbindung mit dem SQL Server beim Verbinden mit der Datenbank fehlgeschlagen"); $query1 = mysql_query("SELECT DISTINCT nachname FROM Tabelle1 WHERE bedingung") or die(mysql_error()); while($query1_row = mysql_fetch_array( $query1 )) { $query2 = mysql_query("SELECT * FROM Tabelle1 WHERE nachname = $query1_row['nachname']") or die(mysql_error()); echo $query1_row['nachname']; echo "<hr/>"; while($query2_row = mysql_fetch_array( $query2 )) { echo $query2_row['vorname']." ".$query2_row['vorname']; } echo"<br/>" }
(Code nicht getestet)Sollte eine ausgabe alla
Huber
------------------
Micheal Huber
Susanne HuberMaier
------------------
Kurt Maier
Sabine Maier
Olaf Maierusw.
So könnte es gehen mit 1ner tabelle.
-
Ich hab ja nicht gesagt, daß es nicht geht... aber das ist ja auch nicht eine SQL-Query.
-
Jaja versuch ja auch nicht gegen irgendwen zu argumentieren, sondern wollt nur helfen. Der erste Post war eher ein denkanstoß, da ich die anwendung nicht gekannt hatte.
-
danke für die tipps
tut mir leid, dass ich im ersten post nicht so detailiert über mein problem geschrieben habe
also habe so eine art upload-tool erstellt, mit dem ich daten auf ein verzeichnis eines users uploaden kann; den user (also tabelle user) kann ich über ein pull-down fenster auswählen
ich möchte, dass auch "Familie Huber" in der liste auswählbar ist, und dass die datei die ich uploaden will, in die verzeichnisse aller Huber's upgeloaded wird - sonst müsste ich den upload für jeden Huber einzeln machen
-
Mit PHP?
Also wenn du in einer Listbox nur die Familiennamen haben willst:
PHP
Alles anzeigen<?php $query1 = mysql_query("SELECT DISTINCT nachname FROM Tabelle1 WHERE bedingung") or die(mysql_error()); ?> <select name="familien"> <?php while($query1_row = mysql_fetch_array( $query1 )) { echo"<option>Familie ".$query1_row['nachname']."</option>; } ?> </selct>
Und auf der nächsten Seite nimmst du einfach einen string zb substr und löscht das "Famile" aus dem string raus, dann hast du nur noch den namen, mit dem du dann das verzeichniss findestPHP$familie = $_POST['familien'] $familie = substr($familie,7) // bin mir nicht sicher, aber such dir dne passenden befehl ...
Ist jetzt keine elegante lösung, aber einfach und sie sollte funktionierenEDIT: Optional ist es möglich (frag mich nicht wie) bei einer Listbox den Text und Wert unabhängig zu definieren (also den text sieht nur der user, hat aber keine auswirkung auf den zu übergebenen wert) - mit javascript geht das auf jeden fall - würde dir halt das substr ersparen, aber ansonsten wärs das selbe
-
EDIT: Optional ist es möglich (frag mich nicht wie) bei einer Listbox den Text und Wert unabhängig zu definieren (also den text sieht nur der user, hat aber keine auswirkung auf den zu übergebenen wert) - mit javascript geht das auf jeden fall - würde dir halt das substr ersparen, aber ansonsten wärs das selbe
-
-
Ähh, ist das nicht ziemlich schwachsinnig?
Für eine Datei x Kopien auf dem Server anlegen, halte ich eher für unklug.
1. Wer sagt dir, dass alle Menschen mit Huber als Nachname zu einer Familie gehören?
2. Warum ladest du die Dateien nicht in ein allgemeineres Verzeichnis und machst die Regelung wer was downloaden/sehen darf mit Hilfe einer Datenbank?
Die oben geposteten Lösung sind meiner Meinung nach eher suboptimal...
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!