Mobile

SQL Eine Spalte doppelt abfragen

Miles86

Ensign
Registriert
Nov. 2009
Beiträge
237
Hallo zusammen,

ich möchte eine Abfrage schreiben, welche eine Spalte doppelt abfragt.

Die Spalten in der Tabelle sind: id, name, id_chef

Ich möchte jetzt den Namen des Mitarbeiters und den Namen des zugehörigen Chefs (über id_Chef definiert) ausgeben. Wie mache ich das?

mfG
 
Mit einem Join.


PHP:
$chef_id = POST oder GET oder DB wie auch immer.
//Wenn alle ausgegeben werden, einfach WHERE raus und ne schleife rein bei der Ausgabe!
$ausgabe = mysql_query("SELECT `mitarbeiter`.`x`, `chef`.`name` FROM `mitarbeiter` LEFT JOIN `chef` ON `mitarbeiter`.`chef_id` = `chef`.`chef_id` WHERE (`mitarbeiter`.`chef_id` = $chef_id) 
ORDER BY `mitarbeiter`.`chef_id` DESC") or die(mysql_error());
$row = mysql_fetch_array($ausgabe);

$bla = $row["bla"];
$bla2 = $row["bla2"];
//beispiel.
echo 'Der Mitarbeiter '.$bla.' ist dem Chef '.$bla2.' zugeteilt.';
 
Wenn es die gleiche Tabelle ist, nen Alias vergeben.
 
Mh,
ich habe nur eine Tabelle, in der sowohl die Chefs, als auch die Mitarbeiter enthalten sind.
Hier mal ein Beispiel:

ID name id_chef
10 peter 15
11 oliver 15
15 klaus 0

Beim entsprechenden SELECT was ich suche soll unter'm Strich folgendes rauskommen
name name_chef
peter klaus
oliver klaus
klaus

Edit: Wie funktioniert das Enigma?

Aber vielen Dank schonmal für deine Mühe :-)
 
PHP:
SELECT mitarbeiter.id, mitarbeiter.name_id, mitarbeiter.id_chef, chef.name_chef, chef.chef_id FROM mitarbeiter LEFT JOIN chef ON `mitarbeiter`.`id_chef` = `chef`.`chef_id` WHERE mitarbeiter.id_chef = 15

Bei dieser DB:

HTML:
--
-- Tabellenstruktur für Tabelle `chef`
--

CREATE TABLE IF NOT EXISTS `chef` (
  `chef_id` int(22) NOT NULL,
  `name_chef` varchar(50) NOT NULL,
  PRIMARY KEY  (`chef_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `chef`
--

INSERT INTO `chef` (`chef_id`, `name_chef`) VALUES
(15, 'Klaus');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `mitarbeiter`
--

CREATE TABLE IF NOT EXISTS `mitarbeiter` (
  `id` int(22) NOT NULL,
  `name_id` varchar(50) NOT NULL,
  `id_chef` int(22) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `mitarbeiter`
--

INSERT INTO `mitarbeiter` (`id`, `name_id`, `id_chef`) VALUES
(1, 'Peter', 15);
 

Anhänge

  • sql.png
    sql.png
    17,2 KB · Aufrufe: 260
Ich hab aber nur eine Tabelle in der alle Mitarbeiter UND Chefs stehen
 
Inner join:
Code:
SELECT
 mitarbeiter.name
 chef.name
FROM
 mitarbeiter,
 mitarbeiter chef
WHERE
 mitarbeiter.chef_id = chef.id

oder wenn der chef optional (NULL) ist, mit einem left join:
Code:
SELECT
 mitarbeiter.name
 chef.name
FROM
 mitarbeiter
 LEFT JOIN mitarbeiter chef ON mitarbeiter.chef_id = chef.id
 
Zurück
Oben