php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.07.2005, 12:56  
Gast
 
Beiträge: n/a
Standard MySQL eine Spalte mit zwei verschiedenen Werten auslesen

Morgen,

folgende Problemstellung:

Ich habe eine Tabelle namens "products". Des Weiteren habe ich eine Tabelle "companies".

Die Tabelle "products" hat neben vielen jetzt unwichtigen Spalten zwei Spalten mit dem Namen "hersteller" und "distributor" in denen jeweils der Name dessen gespeichert ist (zB "SIEMENS" und "MediaMarkt")

Des Weitern habe ich nun aber auch die Tabelle "companies". In dieser sind Name und Link der jeweiligen Firmen eingespeichert, das heisst sowohl die Firmen die als Hersteller, als auch die Firmen die als Distributor zählen, da sich einige Firmen überschneiden und eine seperate Tabelle nicht viel Sinn macht.

Nun habe ich diese beiden Tabellen mit dem JOIN-Operator verbunden und möchte sowohl für den Hersteller als auch für den Distributor den Link auslesen. Jetzt kommt mein Problem: wie gehe ich das am besten an, dass ich sowohl den Link der ersten als auch den Link der zweiten Firma herausbekomme und weiterverwenden kann?

Aktuell sieht meine Abfrage folgendermaßen aus:

Code:
SELECT productid, hersteller, distributor, company, link
                  FROM products
                        LEFT OUTER JOIN companies
                           ON products.hersteller=companies.company
hersteller, distributor .... VARCHAR
company ..................... VARCHAR
link ............................. VARCHAR

Wie gesagt habe ich gerade keinen Plan, wie ich die Abfrage abändern sollte, damit ich auch den Link für products.distributor bekomme und weiterverwenden kann, ohne extra eine zweite Abfrage durchzuführen.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.07.2005, 15:12  
Gast
 
Beiträge: n/a
Standard

Erstmal vorneweg ein Optimierungsvorschlag:
Im Moment müssen Zeichenketten miteinander verglichen werden. Etwas schneller (trotz Indizes) geht es, wenn "nur" Zahlen miteinander verglichen werden.
Wenn Du in der Tabelle companies einen eindeutigen Wert company_id speicherst (z.B. als auto_increment-Wert) kannst Du diesen Wert in anderen Tabellen verwenden, um eindeutig auf diese Firma/diesen Eintrag in der Tabelle zu verweisen.
Zum einen ist da der Geschwindigkeitsvorteil, zum anderen der Platzvorteil; von Datenfehlern wie Siemens<->Seimens ganz zu schweigen.
Wenn eine Änderung der Tabellenstruktur noch möglich ist, empfehle ich es dringend.

---
Du kannst das Spiel mit dem LEFT JOIN einfach nocheinmal wieder holen. Nur jetzt mit der Verbindung distributor->company.
Dazu musst Du die Tabelle company jeweils per alias ansprechen, damit mysql erkennen kann, auf welche "Version" sich eine Feldangabe bezieht.
Code:
SELECT
	p.productid, p.hersteller, hc.company, hc.link, p.distributor, dc.company, dc.link
FROM
	products as p
LEFT JOIN
	companies as hc
ON
	p.hersteller=hc.company
LEFT JOIN
	companies as dc
ON
	p.distributor=dc.company
  Mit Zitat antworten
Alt 23.07.2005, 15:25  
Gast
 
Beiträge: n/a
Standard

Danke für die rasche Antwort, aber ich habs schon selbst hingebracht, kA was war aber der Server dürft ein bisserl viel Eigenleben haben bzw. hat anscheinend die Aliase von mir nicht mitbekommen.. Klumpatkiste halt.

Wegen den IDs, mir wärs selbst lieber so, nur ist leider nicht in einem sinnvollen Maße möglich :/
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
MySQL und Boolean: Werte nur auslesen, wenn TRUE schmidtsmikey PHP Tipps 2008 10 25.03.2008 13:00
Dynamisch Array aus MySQL mit PHP auslesen. Muuip PHP Tipps 2008 2 26.08.2007 21:19
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] Jahr und Monat aus DATE spalte in MySQL abfragen. Datenbanken 7 24.09.2005 02:40
beim auslesen von mysql datenbank bestimmte id nicht auslsen djrace PHP Tipps 2005-2 3 10.09.2005 13:32
große datenmengen aus mysql auslesen bratwurstschorsch PHP Tipps 2005-2 6 04.08.2005 16:05
Array aus MySQL auslesen und permutieren? PHP Tipps 2005-2 2 24.07.2005 14:11
Letzten Eintrag einer MySQL Tabelle auslesen PHP Tipps 2005-2 4 12.07.2005 12:23
[Erledigt] Auslesen und Aktualisieren von einer MYSQL Datenbank PHP Tipps 2005-2 3 05.07.2005 14:39
Auslesen aus Mysql mit php PHP Tipps 2004 10 08.09.2004 15:36
Kein Auslesen aus Mysql möglich.. PHP Tipps 2004 3 12.08.2004 09:38
Top5 aus MySQL auslesen - wie gehts? PHP Tipps 2004 4 09.08.2004 23:37
aus mysql db auslesen und in datei schreiben. Sclot PHP Tipps 2004 2 19.07.2004 21:56
Ganze Texte von Websites aus Mysql auslesen Datenbanken 3 02.06.2004 17:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php auslesen mysql aus eine tabelle und in eine andere schreiben, http://www.php.de/datenbanken/27378-erledigt-mysql-eine-spalte-mit-zwei-verschiedenen-werten-auslesen.html, mysql werte einer spalte vergleichen, mysql werte aus zwei spalten, zwei werte aus verschiedenen tabellen anzeigen mysql, eine spalte aus zwei spalten mysql, mysql join php auslesen, mysql alias weiterverwenden, mysql auslesen und wert vergleichen mit anderem wert, sql where 2 verschiedene werte aus einer spalte sind, join mit unterschiedlichen werten, php zwei werte in eine spalte eintragen, php mysql werte auslesen join, mysql select mit unterschiedlichen werten für eine spalte, set mysql auslesen php, boolean spalte mysql, mysql join spalte mehreren werten, mysql db einträge in verschieden farben php, http://www.php.de/datenbanken/27378-mysql-eine-spalte-mit-zwei-verschiedenen-werten-auslesen.html, sql-datenbank werte einer spalte auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:48 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.