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

Mitglied: ChrisFah

ChrisFah (Level 1) - Jetzt verbinden

06.04.2011 um 00:10 Uhr, 4003 Aufrufe, 6 Kommentare

Hallo, ich versuche bereits seit Stunden ein Problemchen zu lösen. Leider steh ich auf der Leitung....

Ich habe eine Mysql (V5.1) Abfrage aus 2 Tabellen:
Hier die verkürzte Version:

01.
$obj_q_r = "SELECT p.p_id, p.p_titeltext, p.plz, p.ort,  
02.
					o.o_id, o.projekt_id, o.einiges_andere_noch  
03.
					FROM ".TABLE_OBJEKTE." o, ".TABLE_PROJEKTE." p  
04.
					WHERE o.projekt_id = '".$p_id."'  
05.
					AND p.p_id = '".$p_id."'  
06.
					ORDER BY o.o_id ASC";
Zu jedem der Ergebnisse möchte ich eine weitere Abfrage machen, die aus einer dritten Tabelle die Anzahl der Einträge mit einer bestimmten id zählt wobei egal ist, ob das Ergebnis Null 0 ist oder nicht. Die einzelne Abfrage, die ich zu jedem einzelnen Ergebnis machen müsste wäre so:
01.
while ($result = mysql_fetch ......) { 
02.
   $query = "SELECT COUNT(k_id) as zaehler  
03.
                     FROM TABELLE_KONTAKTE k   
04.
                     WHERE k.objekt_id = '".$result['o_id']."' "; 
05.
}
Gibt es nun eine Möglichkeit, diese beiden queries zu einer einzigen zusammenzufassen ???
Leider hab ich schon einiges probiert (Left Join ...), leider kein Erfolg...

Lg und Danke im Voraus, Chris
Mitglied: Biber
06.04.2011 um 01:07 Uhr
Moin ChrisFah,

versuch es mal so:
01.
<code>$obj_q_r = "SELECT p.p_id, p.p_titeltext, p.plz, p.ort,  
02.
         o.o_id, o.projekt_id, o.einiges_andere_noch, 
03.
         k.zaehler  
04.
        FROM ".TABLE_OBJEKTE." o, ".TABLE_PROJEKTE." p, 
05.
             (SELECT k_id, Count(k_id) as zaehler FROM TABELLE.KONTAKTE 
06.
               group by k_id) k  
07.
	WHERE o.projekt_id = '".$p_id."'  
08.
	AND p.p_id = o.projekt_id 
09.
        AND k.k_id = o.o_id 
10.
	ORDER BY o.o_id ASC";
[ungetestet]

Grüße
Biber
Bitte warten ..
Mitglied: ChrisFah2
06.04.2011 um 20:36 Uhr
Hallo,
DANKE für die rasche Antwort. Leider nicht ganz befriedigend:

Es wird zwar korrekt gezählt, abeer nur jene Objekte ausgewählt, die auch in der Tabelle kKontakte einen Eintrag haben. Es sollte aber so sein, das alle vorhandenen Objekte gelistet werden, auch wenn kein Kontakt Eintrag da ist. Wo Kontakt einträge da sind, sollen sie für das betreffende Objekt zusammengezählt werden....

Hier nochmal meine derzeitige query:
01.
$obj_q_r = "SELECT p.p_id, p.p_titeltext, p.plz, p.ort,  
02.
					o.o_id, o.projekt_id, o.o_name, o.immobilie, o.erwerb, o.o_titeltext, o.undvielesmehr,  
03.
					k.zaehler    
04.
					FROM ".TABLE_OBJEKTE." o, ".TABLE_PROJEKTE." p,  
05.
					(SELECT objekt_id, COUNT(k_id) as zaehler FROM ".TABLE_KONTAKTE." group by objekt_id) k   
06.
					WHERE o.projekt_id = '".$p_id."'  
07.
					AND p.p_id = '".$p_id."'  
08.
					AND k.objekt_id = o.o_id  
09.
					ORDER BY o.o_id ASC";
???
Wie kann ich das lösen ???

Lg, Chris
Bitte warten ..
Mitglied: Biber
06.04.2011 um 20:59 Uhr
Moin ChrisFah und ChrisFah2, ihr beiden,

sorry, ihr hattet zwar den LEFT JOIN erwähnt, aber den hab ich verdrängt.

Dann so in etwa:

01.
$obj_q_r = "SELECT p.p_id, p.p_titeltext, p.plz, p.ort,  
02.
	   o.o_id, o.projekt_id, o.o_name, o.immobilie, o.erwerb, 
03.
           o.o_titeltext,o.undvielesmehr,  
04.
	  IfNull(k.zaehler, 0)    
05.
	FROM ".TABLE_OBJEKTE." o left join 
06.
	(SELECT objekt_id, COUNT(k_id) as zaehler  
07.
              FROM ".TABLE_KONTAKTE." group by objekt_id) k  
08.
              ON o.o_id =k.objekt_id , 
09.
             ".TABLE_PROJEKTE." p,  
10.
		WHERE o.projekt_id = '".$p_id."'  
11.
		AND p.p_id = '".$p_id."'  
12.
		AND k.objekt_id = o.o_id  
13.
		ORDER BY o.o_id ASC";
Aus dem INNER JOIN ist ein LEFT JOIN von Tabelle o [Objekte] auf die Tabelle [AggregierteKontakte] k geworden,
zusätzlich ist in der SELECT-Feldliste aus dem Feld "k.zaehler" ein "IFNull(k.zaehler, 0)" geworden.
--> FALLS bei mySQL ein Count(NULL) auch NULL ergibt, wie ich vermute.
--> Das kann ich nicht prüfen jetzt. Ist alles ungetestet.


Aus der WHERE-Bedingung kann das "o.o_id=k.objekt_id" rausfliegen.

Grüße
Biber
Bitte warten ..
Mitglied: ChrisFah2
06.04.2011 um 21:28 Uhr
Hallo again,

der ChrisFah2 ist noch aus "alter" Zeit, als ich meinen Userlogin vergessen hatte und nun loggt mich der FF automatisch damit ein. Egal ...

Also:

Leider auch nicht ganz, es werden auch nur jene Datensätze angezeigt, die auch in den Kontakten angeführt sind.

Aber ich lass es gut sein, der zeitaufwand steht nicht dafür. Ich mach eine weitere query im loop durch die erste query und gut is.

Trotzdem vielen Dank für deine Mühe und die nächtlichen Antworten!!!!
Lg, Chris
Bitte warten ..
Mitglied: Biber
06.04.2011 um 21:42 Uhr
Moin Chris,

okay, ich besteh ja gar nicht drauf, dass es im zweiten Versuch klappt...;-9

Aber:
Ich hab gerade gesehen, dass ich fälschlicherweise in dem Statement oben immer noch das "AND k.objekt_id = o.o_id " in der WHERE-Bedingung stehen habe.
(einfach übersehen).

Damit werden natürlich nach wie vor auch nur die angezeigt, die...<bla>... wie von dir beschrieben.
Machst du bitte noch einen Test mit ohne diese Zeile?

Grüße
Biber
Bitte warten ..
Mitglied: ChrisFah2
06.04.2011 um 22:37 Uhr
HEUREKA !!!
Hallo, jetzt werden alle Ergebnisse gelistet, wie es sein soll, jedoch mit dem key im Array hat es was :
Hier der Key , der eigentlich zaehler
[IfNull(k.zaehler, 0)] => 1
Die Werte stimmen jedoch.

Habe es nun so gelöst, hoffe es stimmt so (hier die ganze query):
01.
$obj_q_r = "SELECT p.p_id, p.p_titeltext, p.plz, p.ort,  
02.
					o.o_id, o.projekt_id, o.o_name, o.immobilie, o.erwerb, o.o_titeltext, o.verkauft, o.nutzflaeche, o.gesamtflaeche,  
03.
					o.zimmer, o.grund, o.stockwerk, o.keller, o.keller_txt, o.garage, o.stellplaetze, o.heizung, o.heizung_txt,  
04.
					o.bauweise, o.bauweise_txt, o.energiekz, o.ausstattung, o.preis, o.preis_ab, o.preis_bis, o.preis_schl,  
05.
					o.mietpreis_netto, o.betriebskosten, o.mietpreis_total, o.mindestgebot, o.vadium, o.verkehrswert, o.fertig_m,  
06.
					o.fertig_y, o.kurzbeschreibung, o.pic0,   
07.
	  				IfNull(k.zaehler, 0) as zaehler      
08.
					FROM ".TABLE_OBJEKTE." o left join 
09.
					(SELECT objekt_id, COUNT(DISTINCT interessenten_id)  as zaehler 
10.
     		         FROM ".TABLE_KONTAKTE." group by objekt_id) k    
11.
      		        ON o.o_id =k.objekt_id ,  
12.
      		       ".TABLE_PROJEKTE." p  
13.
					WHERE o.projekt_id = '".$p_id."'  
14.
					AND p.p_id = '".$p_id."'  
15.
					AND p.p_status = '1'  
16.
					AND p.p_system_status = '1'  
17.
					AND o.o_status = '1'  
18.
					AND o.o_system_status = '1'  
19.
					ORDER BY o.o_id ASC";
Das Problem mit dem key habe ich durch
01.
IfNull(k.zaehler, 0) as zaehler 
gelöst.
Kannst bitte nochmal drüberschaun, daß die beiden "as zaehler" nicht überschreiben ...

Danke, lg, Chris
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 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 19 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 1 TagMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 1 TagHardware12 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux27 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++24 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless22 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...