SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.08.2009, 10:32:58
Papa_Noah Papa_Noah ist offline
Anfänger
 
Registriert seit: Aug 2009
Alter: 32
Beiträge: 3
Problem mit Abfrage

Schönen guten Morgen ^^

Ich hab da im Moment von der Ausbildung her einen Kurs über mySQL. Seid mir also bitte nicht böse wenn ich etwas nicht gleich verstehe. Mein Problem ist folgendes:

Ich habe eine Abfrage, die aus einer Datenbank die kategorien anzeigt und deren Produkte zählt, Problem ist nun, dass es Kategorien gibt, die keine Produkte enthalten. Die Frage ist, wie ich es schaffe, dass mir auch die Kategorien angezeigt werden, welche keine Produkte enthalten. Die Abfrage sieht so aus:

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from produkt p inner join kategorie k on kategorie_fk=k.pk group by k.name;

tabellen:
- kategorie (hat attribute->pk[primärschlüssel] , name)
- produkt (hat attribute->pk[primärschlüssel], name,beschreibung,kategorie_fk[Fremdschlüssel],hersteller_fk[Fremdschlüssel])

Die Aufgabenstellung beschreibt, dass zu dieser Abfrage nur noch ein join nötig ist, um die restlichen kategorien auch noch anzuzeigen. Doch ich habe keine Ahnung wie das gehen soll :(

Achja, ich möchte hier nicht dass meine Aufgaben erledigt werden, sondern einfach ein wenig Hilfestellung für die Lösung des Problems ;)

Vielen Dank schon im Voraus für die Hilfe
Papa_Noah
Mit Zitat antworten
  #2  
Alt 23.08.2009, 10:49:04
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Problem mit Abfrage

bei einem inner join von T1 JOIN T2 werden lediglich die tuple in die ergebnismenge aufgenommen, die eine verknüpfung haben. also an deinem beispiel:

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from produkt p inner join kategorie k on kategorie_fk=k.pk group by k.name;

nur die produkte die auch in einer kategorie vorkommen, werden am ende angezeigt.

wenn du das ganze nun umdrehst, also schreibst "from kategorie k inner join produkt p" werden nur die kategorien aufgenommen, die auch artikel haben. und bei einem OUTER JOIN passiert genau das eben nicht mehr, da werden auch die kategorien angezeigt, die keinen artikel haben.

ich hoffe ich hab jetzt keinen mist erzählt, ohne beispiel-daten ist sowas immer schwer nachzuvollziehen.
Mit Zitat antworten
  #3  
Alt 23.08.2009, 11:01:49
Papa_Noah Papa_Noah ist offline
Anfänger
 
Registriert seit: Aug 2009
Alter: 32
Beiträge: 3
AW: Problem mit Abfrage

Erstmal danke für die schnelle Antwort :D


Also ich hab das gleich mal ausprobiert:

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from kategorie k inner join produkt p on p.kategorie_fk=k.pk group by k.name;

...ergiebt wie du geschrieben hast, dass die Kategorien angezeigt werden, welche Produkte enthalten.

Wenn ich aber outer join verwende, erhalte ich eine Fehlermeldung (1064 oder sowas) also halt syntax error.

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from kategorie k outer join produkt p on p.kategorie_fk=k.pk group by k.name;

Sag mir, wenn du Beispieldaten oder sowas brauchst.
mfg Papa_Noah
Mit Zitat antworten
  #4  
Alt 23.08.2009, 11:20:59
Papa_Noah Papa_Noah ist offline
Anfänger
 
Registriert seit: Aug 2009
Alter: 32
Beiträge: 3
AW: Problem mit Abfrage

Zitat:
Zitat von Papa_Noah Beitrag anzeigen
Erstmal danke für die schnelle Antwort :D


Also ich hab das gleich mal ausprobiert:

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from kategorie k inner join produkt p on p.kategorie_fk=k.pk group by k.name;

...ergiebt wie du geschrieben hast, dass die Kategorien angezeigt werden, welche Produkte enthalten.

Wenn ich aber outer join verwende, erhalte ich eine Fehlermeldung (1064 oder sowas) also halt syntax error.

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from kategorie k outer join produkt p on p.kategorie_fk=k.pk group by k.name;

Sag mir, wenn du Beispieldaten oder sowas brauchst.
mfg Papa_Noah
Also ich habe mich da nochmal kurz informiert, es muss auch noch die richtung beim outer join angegeben werden (also right, left) darum hat es nicht funktioniert ^^
Jetzt bekomme ich alle Kategorien, doch wie sortiere ich die Tabelle jetzt nach Anzahl Produkten, also dass die Kategorie an erster Stelle ist, die am meisten Produkte enthält?

select k.name "Kategorie", count(p.pk) "Anzahl Produkte" from kategorie k left outer join produkt p on p.kategorie_fk=k.pk group by k.name;

So bekomme ich die Daten nach Kategorie sortiert.
Ich habe es bereits versucht mit "group by p.pk" oder "group by 2" aber das funktioniert nicht :(

mfg Papa_Noah
Mit Zitat antworten
  #5  
Alt 23.08.2009, 16:07:52
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Problem mit Abfrage

Dein Stichwort sollte hier "ORDER BY ... ASC/DESC" sein.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage problem Frodonet MySQLi/PDO/(MySQL) 5 11.06.2009 15:53:18
Hilfe bei Abfrage... iamgodx MySQLi/PDO/(MySQL) 5 09.06.2009 11:26:10
Abfrage klaus-maus MySQLi/PDO/(MySQL) 3 12.08.2005 11:19:55
Problem mit Abfrage HENNER PHP Grundlagen 8 09.12.2003 17:32:47
Problem bei PHP Abfrage rallesalle PHP Grundlagen 4 16.11.2003 08:24:00


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:02:59 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt