• 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

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

    "ich bin so kluk. K-L-U-K"
    (Homer Jay Simpson)

  • 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.:

    PHP
    SELECT *
    FROM Tabelle1
    WHERE bedingung
    GROUP BY nachname


    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.

    PHP
    SELECT *
    FROM Familie LEFT JOIN Mitglieder ON nachname.Familie = nachname_key.Mitglieder
    WHERE bedingung
    GROUP BY nachname
  • PHP
    SELECT *
    FROM Tabelle1
    WHERE bedingung
    GROUP BY nachname


    Somit werden alle rückgabenwerte gruppiert nachname und du hättest den effekt.


    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


    (Code nicht getestet)

    Sollte eine ausgabe alla

    Huber
    ------------------
    Micheal Huber
    Susanne Huber

    Maier
    ------------------
    Kurt Maier
    Sabine Maier
    Olaf Maier

    usw.

    So könnte es gehen mit 1ner tabelle.

  • 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:


    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 findest

    PHP
    $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 funktionieren

    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

  • 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

    Code
    <select name="mein_select">
      <option value="1">Eins</option>
      <option value="2">Zwei, tralala</option>
    </select>
  • Code
    <select name="mein_select">
      <option value="1">Eins</option>
      <option value="2">Zwei, tralala</option>
    </select>

    Na dann:

    PHP
    <select name="familien">
    <?php
    while($query1_row = mysql_fetch_array( $query1 )) {
        echo"<option value=/"{$query1_row['nachname']}/">Familie ".$query1_row['nachname']."</option>;
    }
    ?>
    </selct>

    und dann einfach auf der nächsten seite

    PHP
    $_POST['familien']
  • Ä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!