ebiz-webhosting
- Ad -
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, 15: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, 15:36
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.485
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, 15: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, 15:52
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.485
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, 15: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, 15:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.485
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum?
Mit Zitat antworten
  #7 (permalink)  
Alt 22-11-2011, 16: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, 16:16
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.485
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, 21: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, 17: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 18: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 10:01
[MySQL 4.1] Datenbank Design/Struktur mokelmann SQL / Datenbanken 8 17-02-2008 22:15
Datenbank struktur DrWeb BRAINSTORMING PHP/SQL/HTML/JS/CSS 8 24-10-2007 21:16
Datenbank-Struktur strauberry BRAINSTORMING PHP/SQL/HTML/JS/CSS 0 15-02-2006 14:51
[Script] messages in gruppen und in weitere gruppen sortieren? lord_fritte BRAINSTORMING PHP/SQL/HTML/JS/CSS 3 28-12-2004 23: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

Mit Web-Templates Geld verdienen
Mit Web-Templates Geld verdienenWeb-Templates gewinnen immer mehr an Bedeutung. Erfahre hier, wie du dir mit dem TemplateMonster-Marktplatz neue Verkaufswege erschließen kannst.

17.10.2017 | Berni

Kostenloser PHP Editor Codelobster
Kostenloser PHP Editor CodelobsterEin einfach zu verwendender PHP, HTML, CSS, JavaScript Editor mit vielen Funktionen

21.09.2017 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 4 oder neuer, MySQL 3.23 oder neuer und die

17.11.2017 mirko_swm | Kategorie: PHP/ Mail
belbit Ticketcenter ansehen belbit Ticketcenter

Supportanfragen per Helpdesk über E-Mail und per Kontaktformular entgegennehmen. Inkl. iPhone- und Android App zum mobilen Beantworten von Anfragen.

14.11.2017 EichbaumMedia | Kategorie: PHP/ Ticketsystem
PHP Counter Script V1.0 ansehen PHP Counter Script V1.0

Ein ganz einfach einzubauender Besucherzähler. Kostenlos und ohne Werbung für private und gewerbliche Webseiten!

14.11.2017 hinnendahl_com | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:12 Uhr.