Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mysql Abfrage aus 3 Tabellen vereinfachen

Frage Entwicklung Datenbanken

Mitglied: ChrisFah

ChrisFah (Level 1) - Jetzt verbinden

08.05.2011 um 14:57 Uhr, 4114 Aufrufe, 5 Kommentare

Ich suche nach einer Resourcenschonenden Version der folgenden Abfrage...

Hallo,

ich habe folgende unten stehende Abfage, die zwar in einer kleinen Datenbank ganz gut klappt, in einer DB mit mehreren Tausend Einträgen aber nicht wirklich effektiv erscheint.

Hinter der Query steht folgender Sinn:
Ich möchte jeden Interessenten aus der Tabelle i, der in der Tabelle Kontakte eingetragen ist, wobei der Kontakt in der Tabelle i zum Projekt aus Tabelle p gehören muss, dessen firmen_id (in der Tabelle p) gleich dem Wert meiner $_SESSION['firmen_id'] (wird beim Login vergeben) ist,
ODER ABER der interessent wurde von einem User mit der gleichen $_SESSION['firmen_id'] (quasi von einem Mitarbeiter der gleichen Firma) angelegt wie meine $_SESSION[firmen_id].

Gibt es da eine bessere, vor allem resourcenschonende Formulierung der folgenden Abfrage:

01.
$inter_q_r = "SELECT DISTINCT(i.i_id), i.vorname, i.nachname, i.adresse, i.plz, i.ort, i.land, DATE_FORMAT(i.i_erstellt, '%e.%c.%Y') as datum   
02.
					FROM ".TABLE_INTERESSENTEN." i, ".TABLE_KONTAKTE." k, ".TABLE_PROJEKTE." p  
03.
					WHERE (i.i_system_status = '1'  
04.
					AND i.i_id = k.interessenten_id  
05.
					AND k.projekt_id = p.p_id  
06.
					AND p.p_firmen_id = '".(int)$_SESSION['firmen_id']."')  
07.
					OR (i.firmen_id = '".(int)$_SESSION['firmen_id']."')  
08.
					ORDER BY i.nachname ASC, i.vorname ASC, i.plz ASC ";
Danke euch im Voraus,

Lg, Chris
Mitglied: Biber
08.05.2011 um 15:26 Uhr
Moin ChrisFah,

da du ja ausschlieslich Felder aus der INTERESSENTEN-Tabelle brauchst, würde ich es so versuchen:

01.
$inter_q_r = "SELECT i.i_id, i.vorname, i.nachname, i.adresse, i.plz, i.ort,  
02.
        i.land, DATE_FORMAT(i.i_erstellt, '%e.%c.%Y') as datum   
03.
	FROM ".TABLE_INTERESSENTEN." i  
04.
	WHERE (i.i_system_status = '1'
05.
	  AND
06.
	   (i.firmen_id = '".(int)$_SESSION['firmen_id']."'
07.
	    OR EXIST ( SELECT * FROM ".TABLE_KONTAKTE." k, ".TABLE_PROJEKTE." p  
08.
		WHERE  
09.
		AND i.i_id = k.interessenten_id  
10.
		AND k.projekt_id = p.p_id  
11.
		AND p.p_firmen_id = '".(int)$_SESSION['firmen_id']."'
12.
	  )	 
13.
	ORDER BY i.nachname ASC, i.vorname ASC, i.plz ASC ";		
ungetestet
Ich habe die Logik insofern umgedreht, dass auf jeden Fall [nur] die Sätze aus i angezeigt werden, die i.system_status=1 haben
UND entweder (i.firmen_id = FirmenId laut SESSION) haben
ODER aber in dem Kontakt/Projekt-Gelumpe mit einer FirmenId laut SESSION erscheinen.

Da die beiden eintweder/oder-Teile disjunct sind habe ich auch das DISTINCT weggelassen.

Grüße
Biber
Bitte warten ..
Mitglied: ChrisFah
08.05.2011 um 17:08 Uhr
Hallo Bieber !

Danke für die rasche Hilfe. Scheint im probebetrieb toll zu klappen.

Lg, Chris
Bitte warten ..
Mitglied: Biber
08.05.2011 um 17:18 Uhr
Moin ChrisFan,

unabhängig davon, ob einer meiner Tipps hilft oder nicht: Nenn mich bitte nicht "Bieber".
Auch wenn ich mal total daneben liege.

Der "Bieber" bedient andere Zielgruppen.
Und du kannst uns u.a. dadurch unterscheiden, das ich nur je 5 Buchstaben im Vor- und Nachnamen habe, der Weichgespülte aber jeweils 6.
Es gibt auch noch zwei, drei weitere Unterschiede.

Grüße
Biber
Bitte warten ..
Mitglied: ChrisFah
08.05.2011 um 23:07 Uhr
)))))
SORRY !!!

Darauf hab ich nicht geachtet, wollte dich nicht silanisieren!!!

Lg, Chris

Biber .... geht doch.
Bitte warten ..
Mitglied: Biber
08.05.2011 um 23:28 Uhr
[OT[ @ChrisFah,

obwohl... andere haben weniger Berührungsängste mit Retorten-Weichspülern wie Justin oder Silan..
"Silan" ist zum Beispiel auch ein in Deutschland neuerdings modischer männlicher Vorname...*gg
Im kurdischen wie auch im kroatischen bedeutet "Silan" eigentlich "der Starke" - diese Jungs haben's bestimmt nicht leicht in Österreich.

Grüße
Biber
[/OT]
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst MYSQL Abfrage Werte summieren (3)

Frage von Ghost108 zum Thema Datenbanken ...

Datenbanken
gelöst MySQL Abfrage um JOIN erweitern (14)

Frage von datadexx zum Thema Datenbanken ...

PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...