php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.12.2007, 17:40  
Neuer Benutzer
 
Registriert seit: 07.12.2007
Beiträge: 1
tomfrit
Standard Verschachtelte JOINs ... Ergebnis abziehen ...

Moin! Ich versuche mich langsam an MySQL Syntax ranzuwagen, nachdem ich sonst immer alles durch PHP gesiebt habe ... Da entstehen natürlich Probleme ... Ich versuche zu erklären ...
Ich hab zwei Tables:

Code:
CREATE TABLE `Exhibitions` (
  `id` int(11) NOT NULL auto_increment,
  `Name` varchar(100) collate latin1_general_ci NOT NULL default '',
  `Location` int(11) NOT NULL default '0',
  `Start` date NOT NULL default '0000-00-00',
  `Ende` date NOT NULL default '0000-00-00',
Code:
CREATE TABLE `Shows` (
  `id` int(11) NOT NULL auto_increment,
  `Artist_ID` int(11) NOT NULL default '0',
  `Exhibition_ID` int(11) NOT NULL default '0',
(es geht um Ausstellungen und denen darin ausstellenden Künstlern, es können auch mehrere Künstler pro Ausstellung sein, deshalb die Zuordnungstabelle)

Ich möchte jetzt die Ausstellungen herausfiltern, in denen NUR Künstler XY ($art_id) ausstellt. Bisher habe ich das so gelöst:

Code:
SELECT Exhibitions.id AS ex_id,
   Start,
   Ende,
   Location,
   Name FROM Exhibitions 
 INNER JOIN Shows ON 
   (Shows.Exhibition_ID = Exhibitions.id 
   AND Shows.Artist_ID = '$artist_id')
 WHERE Exhibitions.id 
 NOT IN 
 (SELECT Exhibition_ID 
 FROM Shows 
 WHERE Artist_ID != '$artist_id')

Da die Datenbank sehr gross ist, wird mir schmerzlich bewusst, dass der Code nicht sonderlich effizient ist. Ich denke mit verschachtelten JOIN wirds schneller gehen, aber leider bin ich dafür zu neu auf dem Gebiet.

Ich würde mich über Tipps sehr freuen!

Danke,
thomas
tomfrit ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.12.2007, 18:25  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Code:
SELECT e.*
FROM shows AS s
INNER JOIN exhibitions AS e
ON e.id = s.exhibition_id
WHERE artist_id = $art_id
Such alle Shows, deren Künstler ID mit dem Wert aus $art_id übereinstimmt.
Join dann die "Exhibitions" anhand der entsprechenden ID. Fertig.

Falls Shows eine n:m Tabelle ist, einfach nach s.exhibition_id gruppieren.
Zergling-new ist offline   Mit Zitat antworten
Alt 10.12.2007, 08:14  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Und um die Ausstellungen mit mehreren Künstlern auszuschliessen hängst du noch zwei Zeilen an:
Code:
SELECT e.id
FROM shows AS s
INNER JOIN exhibitions AS e
ON e.id = s.exhibition_id
WHERE artist_id = $art_id
GROUP BY(e.id)
HAVING COUNT(*) = 1
__________________
Gruss
L
lazydog ist offline   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
Ergebnis von Formular in iFrame zeigen PsychoEagle HTML, Usability und Barrierefreiheit 2 22.07.2009 21:07
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
MySQL Bug #15229: Unkown column bei JOINs pcschröda Datenbanken 4 11.04.2008 11:10
Ergebnis aus Abfrage in Datenbank einfügen BBieniek PHP Tipps 2008 1 11.01.2008 02:51
Ergebnis eines JOINS mit Bedingungen die alle erfüllt sind? becks123 Datenbanken 4 28.06.2007 12:17
PHP Auslesung mit PEAR DB ohne Ergebnis Beatbox PHP Tipps 2006 3 20.08.2006 18:36
Count mit mehreren Joins cyberholic Datenbanken 4 07.06.2006 23:35
Oracle decode - Bei Select ohne Ergebnis ? Cyberbob_at_tot Datenbanken 6 09.03.2006 12:04
Zufäliges Ergebnis ermitteln PHP Tipps 2006 1 09.01.2006 16:58
Ergebnis in Datenbank updaten? jensK Datenbanken 5 29.12.2005 15:45
Ergebnis einer DBabfrage in HTML Dateien Suchen u. anzeigen PHP Tipps 2005-2 0 15.08.2005 22:35
get_cfg_var liefert kein Ergebnis zurück PHP Tipps 2005 3 05.01.2005 13:31
Problem der richtigen Daten-Ausgabe in einer Tabelle Heart PHP Tipps 2004-2 0 25.11.2004 18:57
[Erledigt] HtmL Page senden bzw Ergebnis aus PHP Kalkulator PHP Tipps 2004 4 29.10.2004 15:56
nach ergebnis sortieren PHP Tipps 2004 15 11.09.2004 14:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
verschachtelte joins, sql inner join verschachtelt, inner join verschachtelt, verschachtelte joins sql, verschachtelte join, join verschachtelt, sql verschachtelte joins, verschachtelter inner join, geschachtelte joins, verschachtelter join, sql join verschachteln, sql abziehen, sql joins verschachteln, verschachtelte inner join, sql tabelle abziehen, sql tabellen abziehen, ergebnis beim abziehen, inner join verschachteln, sql verschachtelte join, joins verschachteln

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:04 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.