1. Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
    Information ausblenden

SELECT Abfrage

Dieses Thema im Forum "PHP" wurde erstellt von lokoroko, 19 November 2017.

  1. lokoroko

    lokoroko Mitglied

    Registriert seit:
    9 Mai 2017
    Beiträge:
    186
    Punkte für Erfolge:
    16
    Hallo,

    ich beschäftige mich gerade mit einer SELECT-Abfrage bei der ich ein wenig durcheinander komme. Und zwar möchte ich auf einer Seite Bilder auslesen die meine Freunde hochgeladen haben und meine eigenen.

    Jetzt gibt es dabei drei Datenbank-Tabellen die eine Rolle spielen:
    abonennten: In dieser Tabelle finden sich zwei spalten und zwar iduser und followed. Letztendlich wird in dieser Tabelle gespeichert wer mit wem befreundet ist

    bildtabelle: In dieser Tabelle werden sämtliche Bilder abgespeichert die von jedem User hochgeladen wurden

    adressen: Hier sind die Account-Informationen der einzelnen User abgespeichert

    Ich schaffe es alle Bilder auszulesen von den Freunden eines Users. Was nicht gelingt ist das zusätzlich zu denen auch noch die Bilder des Users ausgelesen werden der gerade angemeldet ist. Ich komme dabei durcheinander und frage mich ob das in der Art und Weise wie ich mir das denke überhaupt möglich ist.

    Das hier ist meine Abfrage:

    Code (text):
    1. $sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id FROM `bildtabelle`, `adressen`, `abonennten` WHERE adressen.id = bildtabelle.user_id AND bildtabelle.user_id = abonennten.followed AND abonennten.iduser = '$userid' ORDER BY timestamp DESC LIMIT $start, $count2";
    Ich weiß nicht ob für euch ersichtlich ist wie meine Datenbank aufgebaut sind aber an sich ist das nicht so wichtig. Mein Hauptproblem liegt nämlich darin das ich durch AND nur weiter eingrenze welche Bilder mir anheizt werden sollen. Dadurch funktioniert das ganze nicht so wie ich mir das wünsche.

    Vom Prinzip her stelle ich mir sowas vor auch wenn das so nicht funktioniert:

    Code (text):
    1. $sql = "SELECT bildtabelle.path WHERE bildtabelle.user_id = '$userid' AND bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id FROM `bildtabelle`, `adressen`, `abonennten` WHERE adressen.id = bildtabelle.user_id AND bildtabelle.user_id = abonennten.followed AND abonennten.iduser = '$userid' ORDER BY timestamp DESC LIMIT $start, $count2";
    Weiß einer von euch ob das so in der Art möglich wäre ? PS: $userid ist die ID des angemeldeten Users
     
    Werbung:

    Jetzt registrieren, damit diese Werbung verschwindet
  2. scbawik

    scbawik Senior HTML'ler

    Registriert seit:
    14 Juli 2011
    Beiträge:
    2.378
    Punkte für Erfolge:
    83
    Code (MySQL):
    1. -- Create syntax for TABLE 'images'
    2. CREATE TABLE `images` (
    3.   `path` varchar(255) DEFAULT NULL,
    4.   `userid` int(11) DEFAULT NULL,
    5.   PRIMARY KEY (`id`)
    6.  
    7. -- Create syntax for TABLE 'subscribers'
    8. CREATE TABLE `subscribers` (
    9.   `subscriberid` int(11) DEFAULT NULL,
    10.   `userid` int(11) DEFAULT NULL,
    11.   PRIMARY KEY (`id`)
    12.  
    13. -- Create syntax for TABLE 'users'
    14. CREATE TABLE `users` (
    15.   `name` varchar(255) DEFAULT NULL,
    16.   PRIMARY KEY (`id`)
    Code (MySQL):
    1.     i.path
    2. FROM images AS i
    3. LEFT JOIN users AS u ON (u.id = i.userid)
    4. LEFT JOIN subscribers AS s ON (s.userid = i.userid)
    5. WHERE u.id = 2 OR s.subscriberid = 2;
    6.  
    Habs jetzt nicht wirklich getestet aber müsste funktionieren.
     
    lokoroko gefällt das.
  3. lokoroko

    lokoroko Mitglied

    Registriert seit:
    9 Mai 2017
    Beiträge:
    186
    Punkte für Erfolge:
    16
    Okay ich werde das ganze testen und mich dann nochmal melden :D
     
  4. lokoroko

    lokoroko Mitglied

    Registriert seit:
    9 Mai 2017
    Beiträge:
    186
    Punkte für Erfolge:
    16
    Also es scheint alles so zu funktionieren wie ich mir das vorgestellt habe. Muss das ganze jetzt noch weiter austesten aber sieht gut aus !!!

    Vielen Dank :DD