Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: ChrisFah

ChrisFah (Level 1) - Jetzt verbinden

08.05.2011 um 14:57 Uhr, 4160 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

Mysql Select Befehl über 3 Tabellen?

gelöst Frage von rdklieDatenbanken6 Kommentare

Guten Tag zusammen! Ich habe eine kleine Frage bezüglich Mysql. Zur Fragestellung: Die Frage wäre "Welche Mitglieder organisieren Veranstaltungen ...

PHP

MYSQL Abfrage von 2 identischen Tabellen

gelöst Frage von datadexxPHP5 Kommentare

Hi an alle MYSQL Profis, ich hätte folgende Frage. Ich habe 2 Tabellen (kstamm, ustamm), diese sind vom Aufbau ...

Datenbanken

MYSQL Abfrage

gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

Datenbanken

Inkonsistente MySQL Tabellen wiederherstellen

Frage von AndroxinDatenbanken1 Kommentar

Moin, aus "Gründen" musste ich diverse MySQL Datenbanken von einer formatierten Festplatte wiederherstellen. In der Regel waren auch noch ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)5 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...