Announcement

Collapse
No announcement yet.

Denkblockade mit Subqueries

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Denkblockade mit Subqueries

    Hallo liebe Community,

    ich sitze nun schon einige Zeit an einem Problem und weiß einfach nicht mehr weiter.
    Es geht um folgendes, ich habe drei Tabellen; die wie folgt aussehen:
    Code:
    --
    -- Tabellenstruktur für Tabelle `users`
    --
    CREATE TABLE `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Benutzer ID',
      `username` varchar(25) NOT NULL COMMENT 'Benutzername',
      `email` varchar(30) NOT NULL COMMENT 'EMail-Adresse',
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`,`email`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    
    --
    -- Tabellenstruktur für Tabelle `user_degrees`
    --
    CREATE TABLE `user_degrees` (
      `user` int(11) NOT NULL COMMENT 'Benutezr ID',
      `degree` int(11) NOT NULL COMMENT 'Grad ID'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    --
    -- Tabellenstruktur für Tabelle `degrees`
    --
    CREATE TABLE `degrees` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Grad ID',
      `name` varchar(50) NOT NULL COMMENT 'Bezeichnung',
      `status` int(11) DEFAULT NULL COMMENT 'Ansehen',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    Ich versuche aus user_details eine Zeile auszulesen, dann per Subquerie frage ich ab ob der Benutzer Zeilen in user_degrees hat, falls ja möchte ich dann die Zeile die den höchsten in degrees.status aufweißt zurück bekommen bzw. den degrees.name.

    Irgendwie komme ich nicht dahinter, wäre toll wenn mir jemand helfen würde. :-(

    Danke!
    Conman

  • #2
    [highlight=sql]
    SELECT u.id, u.username, u.email, deg.status, deg.name
    FROM
    (
    SELECT max(status) status, max(name) name, max(id) id
    FROM degrees
    GROUP BY status, name, id
    HAVING COUNT(status) > 0
    ) deg
    JOIN user_degress u_deg ON u_deg.degree = deg.id
    JOIN users u ON u.id = u_deg.user
    [/highlight]

    So in etwa dürfte es funktionieren.

    Comment

    Working...
    X