1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

anfängerfrage

  • KiteRider
  • 26. November 2006 um 11:54
  • Unerledigt
  • KiteRider
    13
    KiteRider
    Mitglied
    Punkte
    1.655
    Beiträge
    268
    • 26. November 2006 um 11:54
    • #1

    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

  • Homer
    10
    Homer
    Mitglied
    Reaktionen
    9
    Punkte
    1.079
    Beiträge
    210
    • 26. November 2006 um 12:30
    • #2

    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)

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 27. November 2006 um 16:54
    • #3

    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
  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 27. November 2006 um 18:29
    • #4
    Zitat von For3st
    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.

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 27. November 2006 um 18:47
    • #5
    Zitat von Jensi


    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
    @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/>"
    }
    Alles anzeigen


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

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 28. November 2006 um 00:51
    • #6

    Ich hab ja nicht gesagt, daß es nicht geht... aber das ist ja auch nicht eine SQL-Query.

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 28. November 2006 um 03:37
    • #7

    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.

  • KiteRider
    13
    KiteRider
    Mitglied
    Punkte
    1.655
    Beiträge
    268
    • 28. November 2006 um 12:26
    • #8

    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

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 28. November 2006 um 14:49
    • #9

    Mit PHP?

    Also wenn du in einer Listbox nur die Familiennamen haben willst:

    PHP
    <?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>
    Alles anzeigen


    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

  • beefy
    13
    beefy
    Mitglied
    Reaktionen
    18
    Punkte
    1.683
    Beiträge
    304
    • 28. November 2006 um 16:05
    • #10
    Zitat von For3st

    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>
  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 28. November 2006 um 17:53
    • #11
    Zitat von beefy
    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']
  • Simon
    5
    Simon
    Mitglied
    Reaktionen
    1
    Punkte
    211
    Beiträge
    42
    • 30. November 2006 um 12:41
    • #12

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

    PokerStrategy - Pokercommunity + 150$ geschenkt!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung