Datensätze mit einer bestimmten ID ausgeben.

Diskutiere mit über: Datensätze mit einer bestimmten ID ausgeben. im Datenbanksysteme für das Web Forum

  1. fabs

    fabs Thread Starter MacUser Mitglied

    Beiträge:
    247
    Zustimmungen:
    1
    Registriert seit:
    19.06.2005
    Hi, ich habe vor mir ein kleines Newssystem zu basteln. Hierbei werden die news in verschiedene Kategorien unterteilt und in eine Feld gespeichert.

    also zum Beispiel so!

    News_id - Kategorie
    1 - 1,2
    2 - 2
    3 - 1
    4 - 2,3,4
    5 - 12,3

    Wie kann ich jetzt alle Datensätze abrufen wo die id 2 vorkommt?

    Danke, fabs
     
  2. Sojus

    Sojus MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    3
    Registriert seit:
    30.05.2006
    Das ist sehr unschön und nicht sehr professionel.

    Normalerweise macht man das über eine Zwischentabelle. (Auflösung einer m-m Beziehung wenns dich interessiert).

    Also:
    Du hast 3 Tabellen:

    News: Hier werden die News gespeichert, die muss mindestens diese spalten haben:

    news_id news_text ...usw

    Kategoriene: Hier werden die verschiedenen kategoriene gespeichert.

    kategorie_id kategorie_name

    news_kategorie: Jetzt kommt der Trick :) in dieser zwischentabelle werden einer news die kategorieen zugeordnet.

    news_id kategorie_id

    die einträge könnten dann etwa so ausehen:

    1 1
    1 2
    1 3

    dann gehört die news 1 zu den kategorien 1, 2 und 3.

    habe hier mal eine beispiel DB als sqldump:
    Code:
    -- phpMyAdmin SQL Dump
    -- version 2.8.1
    -- http://www.phpmyadmin.net
    -- 
    -- Host: localhost
    -- Erstellungszeit: 24. August 2006 um 18:17
    -- Server Version: 5.0.21
    -- PHP-Version: 5.1.4
    -- 
    -- Datenbank: `suem`
    -- 
    
    -- --------------------------------------------------------
    
    -- 
    -- Tabellenstruktur für Tabelle `kategorie`
    -- 
    
    CREATE TABLE `kategorie` (
      `kat_id` int(11) NOT NULL auto_increment,
      `kat_name` text collate latin1_general_ci NOT NULL,
      PRIMARY KEY  (`kat_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;
    
    -- 
    -- Daten für Tabelle `kategorie`
    -- 
    
    INSERT INTO `kategorie` VALUES (1, 'Computer');
    INSERT INTO `kategorie` VALUES (2, 'OS');
    INSERT INTO `kategorie` VALUES (3, 'Apple');
    
    -- --------------------------------------------------------
    
    -- 
    -- Tabellenstruktur für Tabelle `news`
    -- 
    
    CREATE TABLE `news` (
      `news_id` int(11) NOT NULL auto_increment,
      `news_name` text collate latin1_general_ci NOT NULL,
      PRIMARY KEY  (`news_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
    
    -- 
    -- Daten für Tabelle `news`
    -- 
    
    INSERT INTO `news` VALUES (1, 'Leopard kommt im Frühling');
    INSERT INTO `news` VALUES (2, 'Bill gates run''s like a girl');
    
    -- --------------------------------------------------------
    
    -- 
    -- Tabellenstruktur für Tabelle `news_kategorie`
    -- 
    
    CREATE TABLE `news_kategorie` (
      `news_id` int(11) NOT NULL,
      `kat_id` int(11) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    
    -- 
    -- Daten für Tabelle `news_kategorie`
    -- 
    
    INSERT INTO `news_kategorie` VALUES (1, 1);
    INSERT INTO `news_kategorie` VALUES (1, 2);
    INSERT INTO `news_kategorie` VALUES (1, 3);
    INSERT INTO `news_kategorie` VALUES (2, 2);
    
    
    MIt diesem Query kannst du jetzt alle news auslesen, die zur kategorie 2 gehören

    SELECT news.news_name
    FROM news, news_kategorie
    WHERE news_kategorie.kat_id =2
    AND news_kategorie.news_id = news.news_id






    mfg
     
    Zuletzt bearbeitet: 24.08.2006
  3. fabs

    fabs Thread Starter MacUser Mitglied

    Beiträge:
    247
    Zustimmungen:
    1
    Registriert seit:
    19.06.2005
    Hi, dies wäre meine zweite Möglichkeit gewesen das zu realisieren. Kommt hierbei nicht eine sehr große Menge an Daten zusammen. Immerhin gibt es so pro News viele Kategorie einträge?

    Oder fällt das nicht ins "gewicht"?
     
  4. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    Registriert seit:
    27.09.2004
    nö ins gewicht fällt das nicht...

    diese sogenannte Normalform für Tabellen erleichtert dir einiges an Arbeit, wenn du etwas verändern willst... :)

    machs einfach so und kümmere dich nicht um die Anzahl Einträge...

    Simu
     
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004

    Stimmt die Normalenform ist sehr hilfreich!

    Außerdem wen interssieren bei 3-stelligen Gigabytes auf Festplatten auch nur ein paar 100.000 Zahlenpaare im 8 oder 16 Bit Format? Früher hat man mit sowas gegegeizt. Heute nutzt man das zur Beschleunigung! Nur zu, wo es doch schon so ausführlich erläutert wurde!
     
  6. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Da habe ich auch noch eine Frage :)

    Wenn ich die News unterteilt habe:

    • Headline
    • Autor
    • Text
    • Datum

    Zusätzlich habe ich teilweise noch Fotos dabei oder Videos:

    • FotoURL
    • FotoThumbnailURL

    • VideoURL
    • VideoScreenshotURL

    Wie baue ich dann die Datenbank auf? Kann ich meine wie oben "zusammengefassten" Felder in jeweils eine Tabelle speichern? Und dann die Auflösungstabelle dazu? Oder für "Autor", "Datum", "Headline" etc. jeweils eine Tabelle mit Auflösungstabelle? Auf irgendwas muss ich mich ja beziehen ;)

    2nd
     
  7. ThaHammer

    ThaHammer MacUser Mitglied

    Beiträge:
    3.276
    Zustimmungen:
    13
    Registriert seit:
    01.06.2004
    Verknüpfe die Tabellen mit einer BenutzerID, als Beispiel. Dann kannst Du drei Tabellen draus machen, jeweils ergänzt um die BenutzerID.
     
  8. fabs

    fabs Thread Starter MacUser Mitglied

    Beiträge:
    247
    Zustimmungen:
    1
    Registriert seit:
    19.06.2005
    Soll man diese oben angeführte "Technik" auch für Galerien verwenden zu der Bilder verknüpft werden?

    Also so zb

    Tabelle Bild2Galerie (BID = Bild ID, GID = Galerie ID)
    ID - GID - BID
    1 - 1 - 1
    1 - 1 - 2
    1 - 1 - 3
    1 - 1 - 4
    1 - 2 - 1
    1 - 2 - 5

    etc?
     
  9. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    der DB ist nun wirklich egal, was Du mit den Zahlen verwaltest ;)
    Die Technik ist durchaus empfehlenswert bei relationalen DBMS!
     
  10. joedelord

    joedelord MacUser Mitglied

    Beiträge:
    481
    Zustimmungen:
    0
    Registriert seit:
    12.12.2002
Die Seite wird geladen...
Ähnliche Themen - Datensätze einer bestimmten Forum Datum
SQL: Nächstgelegenes Datum aus einer Gruppe ermitteln Datenbanksysteme für das Web 09.10.2014
SQL - Join - Nicht übereinstimmende Datensätze anzeigen Datenbanksysteme für das Web 02.02.2011
Zwei Tabellen zu einer View zusammenfügen Datenbanksysteme für das Web 03.11.2008
Problem mit einlesen einer CSV in MySQL Datenbanksysteme für das Web 29.09.2008
Reihenfolge der Datensätze aus MySQL? Datenbanksysteme für das Web 21.04.2005

Diese Seite empfehlen

Benutzerdefinierte Suche