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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
23.08.2009, 10:32:58
|
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
|
23.08.2009, 10:49:04
|
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.
|
23.08.2009, 11:01:49
|
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
|
23.08.2009, 11:20:59
|
Anfänger
|
|
Registriert seit: Aug 2009
Alter: 32
Beiträge: 3
|
|
AW: Problem mit Abfrage
Zitat:
Zitat von Papa_Noah
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
|
23.08.2009, 16:07:52
|
|
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!
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:02:59 Uhr.
|