php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 22-11-2011, 14:34
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard Datenbank Struktur, Gruppen, Auswerten

Hallo,

Ich zerbreche mir im Moment den Kopf über ein kleines Problem und finde keine zufrieden stellende Lösung :

Ich habe ein Datenbank mit Name :
id Vorname Nachname Land
1 Karl Muster D
2 Jens Schmidt NL
3 Tanja Schmidt NL
4 Gustav Schmidt NL
....

Nun möchte ich einzelne Einträge als Gruppe markieren ( z.B. eine Familie )
-> Jens und Tanja Schmidt sind eine Familie, Gustav gehört nicht dazu.
id Vorname Nachname Gruppe Land
1 Karl Muster NULL D
2 Jens Schmidt 1 NL
3 Tanja Schmidt 1 NL
4 Gustav Schmidt NULL NL
....

Soweit so gut.
Nun möchte ich herausfinden wie viele Familien in welchen Land Wohnen
-> SELECT COUNT(id) FROM fam GROUP BY land

Wie bekomme ich es hin das doppelte Einträge in Gruppe nur einmal gezählt werden ??
Ich habe da irgendwie tomaten auf den Augen im mom. Oder hat jemand vieleicht eine bessere Idee wie ich in dem Fall die Tabelle aufbauen sollte ?

doerfnix
Mit Zitat antworten
  #2 (permalink)  
Alt 22-11-2011, 14:36
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

SELECT Land, COUNT(DISTINCT Gruppe) FROM fam GROUP BY Land
Mit Zitat antworten
  #3 (permalink)  
Alt 22-11-2011, 14:39
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Das Funktioniert nicht , beim oben genannten Beispiel würde

D 0 NL 1



herauskommen. Das habe ich auch schon probiert
Mit Zitat antworten
  #4 (permalink)  
Alt 22-11-2011, 14:52
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Also für mich sieht das Ergebnis korrekt aus.
Mit Zitat antworten
  #5 (permalink)  
Alt 22-11-2011, 14:54
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Das korrekte Ergebnis müßte lauten : D 1 NL 2
Mit Zitat antworten
  #6 (permalink)  
Alt 22-11-2011, 14:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum?
Mit Zitat antworten
  #7 (permalink)  
Alt 22-11-2011, 15:03
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

1 Karl Muster NULL D -> 1 * D
2 Jens Schmidt 1 NL -> 1 * NL
3 Tanja Schmidt 1 NL -> doppelt, gehört zu id 2
4 Gustav Schmidt NULL NL -> 2 * NL

1 * D, 2 NL

In wirklichkeit steckt hier eine Kunden Datenbank dahinter, es gibt vereinzelt Kunden wo wir Kontakt zu einzelnen Abteilungen haben und diese Einzeln gelistet werden sollen, aber in der Statistik als 1 Kunde gezählt werden sollen.

Ich habe mir das so gedacht : Kunden-Tabelle mit allen Kunden ( z.B. MusterFirma, Müller Firma Abt. Holz, Müller Firma Abt. Stahl ... ) und eine Tabelle in der Gruppe-Namen gelistet sind ( z.B. Müller Firma) .
In der Auflistung werden diese dann als eine Firma mit Unterpunkten angezeigt:
  • Muster Firma
  • Firma Müller :
  1. Abt. Holz
  2. Abt. Stahl
  • Firma xyz
Vileicht gibt es ja auch eine bessere Lösung. In der Gruppentabelle nochmal alle Firmen aufzulisten, auch wenn es nur eine Abt. gibt, finde ich nicht so prikelnd.

doerfnix
Mit Zitat antworten
  #8 (permalink)  
Alt 22-11-2011, 15:16
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

firma:
id, firmenname

abteilung:
id, firma_id, abteilungsname

kunde:
id, abteilung_id, vorname, nachname


Aber wo hängt jetzt das Land? Beim Kunden oder bei der Abteilung?
Mit Zitat antworten
  #9 (permalink)  
Alt 22-11-2011, 20:53
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Die Firma ist unser Kunde, also kann hier eine Tabelle wegfallen.

PHP-Code:
firma:
idfirmenname   

abteilung
:
idfirma_idabteilungsname ,  Land 
In 98% der fällen ist es nur so das Firmenname == Abteilung ist, sodas hier eine Menge Overhead entsteht, den wollte ich irgendwie vermeiden. Aus diesen Grund hatte ich die Idee die erste Tabelle ( id, firmenname ) nur zu für die 2 % zu nutzen, bei denen es wirklich mehr als 1 Abteilung gibt.

Aber ich glaube ich komme nicht daran vorbei hier die beiden Tabellen parallel zu pflegen.

doerfnix
Mit Zitat antworten
  #10 (permalink)  
Alt 23-11-2011, 16:57
doerfnix
 Registrierter Benutzer
Links : Onlinestatus : doerfnix ist offline
Registriert seit: Nov 2011
Beiträge: 9
doerfnix befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

Ich habe heute nochmal ein bisschen rumgespielt und folgende Lösung gefunden:

PHP-Code:
select *, ( ohneGruppe.kunden gruppe.gruppen) as anzahl from 
   
(
    
select landcount(id) as kunden 
      from kunden 
      where kunden
.`groupis null 
      group by land
   
) as ohneGruppe
   left join 
   

    
select landcount(DISTINCT `group`) as gruppen 
    from kunden group by land
   
) as gruppe 
   ON 
(ohneGruppe.region gruppe.region
Ergibt dann folgendes Ergebnis :

PHP-Code:
land   kunden   land  gruppen   anzahl    
  D        1         D         0          1
  NL       1         NL       1          2 

Geändert von doerfnix (23-11-2011 um 17:00 Uhr) Grund: Text Formatiert
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
datenbank struktur Kakuzu SQL / Datenbanken 5 09-06-2009 09:01
[MySQL 4.1] Datenbank Design/Struktur mokelmann SQL / Datenbanken 8 17-02-2008 21:15
Datenbank struktur DrWeb BRAINSTORMING PHP/SQL/HTML/JS/CSS 8 24-10-2007 20:16
Datenbank-Struktur strauberry BRAINSTORMING PHP/SQL/HTML/JS/CSS 0 15-02-2006 13:51
[Script] messages in gruppen und in weitere gruppen sortieren? lord_fritte BRAINSTORMING PHP/SQL/HTML/JS/CSS 3 28-12-2004 22:01

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

html5pattern ansehen html5pattern

Pflichtfelder und Eingabevorgaben für Formulare validieren

06.07.2018 Berni | Kategorie: HTML5/ HowTo
Adventure PHP Framework

Das Adventure PHP Framework versteht sich als Hilfsmittel zur Implementierung von objektorientierten, generischen und wiederverwendbaren PHP-Web-Applikationen.

05.07.2018 phpler | Kategorie: PHP/ Framework
Phpstorm ansehen Phpstorm

Umfangreiche Entwicklungsumgebung für PHP-Programmierer inkl JavaScript und HTML Support. Jetzt Version 8.0!

03.07.2018 Berni | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

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