Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > 2 Daten aus einer 2.Tab durch 2 Primärschlüssel aus 1. Tab
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 15.07.2006, 18:14 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 27.01.2006
Beiträge: 26
Standard 2 Daten aus einer 2.Tab durch 2 Primärschlüssel aus 1. Tab

Hallo Leute,
Ich will eine Datenbankabfrage machen mit der ich aus einer 1. Tab. die Primärschlüsselnummern für eine 2. Tab. benutze um mir die Daten aus einer 2. Tab. indirekt zu hohlen.
Gib es da eine Möglichkeit?
Hier ein Beispiel Tab. 1:
Code:
ID | A | B
----------
 0 | 1 | 2
In Tab. 1 stellen die Spalten A und B die Primärschlüssel zur Verfügung die
in der Tab. 2 durch Werte 'Test1..' u.s.w. in einer Abfrage Ersetzt werden sollen.
Beispiel Tab. 2:
Code:
ID | Wert
----------
 1 | Test1
 2 | Test2
 3 | Test3
Gibt es eine Möglichkeit mit nur einer DB-Anfrage die Werte der 2. Tab. über die 1. Tab. zu erhalten?
Als TestDatenbank geb ich mal folgenden Anhang mit:
Code:
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl1
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Erstellungszeit: 15. Juli 2006 um 17:55
-- Server Version: 5.0.18
-- PHP-Version: 5.1.1
-- 
-- Datenbank: `test`
-- 
-- --------------------------------------------------------
-- 
-- Tabellenstruktur für Tabelle `t1`
-- 
CREATE TABLE `t1` (
  `sp_t1_ID` int(11) NOT NULL auto_increment,
  `sp_t2_ID1` int(11) NOT NULL,
  `sp_t2_ID2` int(11) NOT NULL,
  PRIMARY KEY  (`sp_t1_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
-- 
-- Daten für Tabelle `t1`
-- 
INSERT INTO `t1` VALUES (1, 1, 2);
-- --------------------------------------------------------
-- 
-- Tabellenstruktur für Tabelle `t2`
-- 
CREATE TABLE `t2` (
  `sp_t2_ID` int(11) NOT NULL auto_increment,
  `sp_Wert` text collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`sp_t2_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
-- 
-- Daten für Tabelle `t2`
-- 
INSERT INTO `t2` VALUES (1, 'rot');
INSERT INTO `t2` VALUES (2, 'gruen');
Alpha Centauri ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 18:53 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

sql Code:
  1. SELECT
  2.     *
  3. FROM
  4.     (t1 INNER JOIN t2 AS t2_1 ON t1.sp_t2_ID1 = t2_1.sp_t2_ID)
  5.     INNER JOIN t2 ON t1.sp_t2_ID2 = t2.sp_t2_ID;

Ausgabe:
Code:
sp_t1_ID | sp_t2_ID1 | sp_t2_ID2 | sp_t2_ID | sp_Wert | sp_t2_ID | sp_Wert
---------------------------------------------------------------------------
1        | 1         | 2         | 1        | rot     | 2        | gruen
__________________
I did it my way - Senseless-Blog

Geändert von WarrenFaith (15.07.2006 um 18:55 Uhr).
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 18:57 Nach oben    #3
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 522
Standard

//edit: hab jetzt aliase drinne
Code:
SELECT t2a.sp_Wert AS wert1, t2b.sp_Wert AS wert2
FROM t1
JOIN t2 AS t2a ON t2a.sp_t2_ID = t1.sp_t2_ID1
JOIN t2 AS t2b ON t2b.sp_t2_ID = t1.sp_t2_ID2
WHERE t1.sp_t1_ID = 1
ausgabe:
Code:
wert1 | wert2
--------------
rot     |  grün
__________________
Weißt Bescheid - Scheiß wie weit

Geändert von $traight-$hoota (15.07.2006 um 19:02 Uhr).
$traight-$hoota ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 19:00 Nach oben    #4
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Ich würde aber präferieren anzugeben, mit welchem Join du arbeitest. Soweit ich weiß ist es konfigurierbar, welche Variante bei Angabe von "JOIN" verwendet werden soll.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 19:01 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 27.01.2006
Beiträge: 26
Standard

He coole Sache,
Danke!
Ich mehr die ganze Zeit mit LEFT JOIN rum.

Gibt es eine Möglichkeit für sp_Wert ein Alias so zu schreiben dass man 2 unterschiedliche Spalten erhält ?
z.B. sp_Wert1 und sp_Wert2
Alpha Centauri ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 19:01 Nach oben    #6
Neuer Benutzer
 
Registriert seit: 27.01.2006
Beiträge: 26
Standard

OK da war jemand schneller
Alpha Centauri ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 19:04 Nach oben    #7
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 522
Standard

Zitat:
Zitat von WarrenFaith
Ich würde aber präferieren anzugeben, mit welchem Join du arbeitest. Soweit ich weiß ist es konfigurierbar, welche Variante bei Angabe von "JOIN" verwendet werden soll.
afaik ist laut MySQL doc INNER JOIN nur ein alias für JOIN

//edit:
naja, sowas inner art...
Zitat:
Zitat von mysql doc
Der NATURAL [left] JOIN zweier Tabellen ist definiert als semantisch identisch äquivalent zu einem INNER JOIN oder einem LEFT JOIN mit einer USING-Klausel, die alle Spalten nennt, die in beiden Tabellen existieren.
__________________
Weißt Bescheid - Scheiß wie weit

Geändert von $traight-$hoota (15.07.2006 um 19:07 Uhr).
$traight-$hoota ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.07.2006, 19:06 Nach oben    #8
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Für MySQL

Alias mit "Spaltenname AS wasduwillst"
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hardware-RAID-Lösung robo47 Plauderecke 29 26.12.2007 04:49
Speicherung von unternehmenskritischen Daten bobby Datenbanken 5 23.05.2007 08:33
[JAVA] Wie man aus Java mit einem PHP-Script kommuniziert sparrow Tutorials 0 25.03.2006 22:24
daten in array eintragen und auslesen zerberos Allgemeine Java-Programmierung 15 20.02.2005 21:49
[PHP] Wie übergebe ich Daten per URL? Ben Tutorials 0 05.12.2004 14:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:13 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44