php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.08.2009, 17:10  
Neuer Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 20
Bernd-m befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] left join problem

Hallo,
ich suche nun schon den zweiten Tag, ich hoffe mir kann jemand helfen.

Ich habe drei Tabellen und möchte diese Verbinden.
Code:
lastminute                   lastminute1               gastgeber

kdr.     +  vonlast1        kdr.   +  vonlast2         kdr.    +   name
------------------          ------------------         ------------------
1800     |     feb           1800    |   jan            1800   |    müller
224      |     mar             4     |  nov             4      |    mayer
4        |    dec            1823    |  feb             224    |    schmid
871      |    feb                                       1823   |    frank
                                                        871    |    wolf
                                                        999    |    martin
                                                        64     |    jon
Es soll nach dem Join eine "Tabelle" in dieser Form sein:

Code:
kdr     +     vonlast1     +      vonlast2     +     name
-----------------------------------------------------------
1800    |      feb         |          jan       |     müller
224     |      mar         |                    |     schmid 
4       |      dec         |          nov       |     mayer
871     |      feb         |                    |     wolf
1823    |                  |          feb       |     frank

Mein Code ist derzeit leider lässt dieser den eintrag "kdr 1823" weg.
Ist mir klar dass das mit meinem LEFT JOIN so ja auch normal ist:
PHP-Code:
FROM lastminute
 
LEFT JOIN lastminute1 ON 
(lastminute1.kundennummer lastminute.kundennummer)
LEFT JOIN gastgeber ON (gastgeber.kundennummer lastminute.kundennummer)
       
GROUP BY gastgeber.kundennummer"; 
- Kann / Muss ich da einen FULL JOIN nehmen?
- Kann / Muss ich verschiedene JOIN arten mischen?


Vielen Dank schon mal
Sandro
Bernd-m ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.08.2009, 17:23  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

also gehen geht das schon aber IMHO fehlt bei Deiner Logik eine Mastertabelle in der alle kdr hinterlegt sind.
HPR1974 ist offline   Mit Zitat antworten
Alt 23.08.2009, 18:10  
Neuer Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 20
Bernd-m befindet sich auf einem aufstrebenden Ast
Standard

Die Master Tabelle mit allen kdr ist eigentlich die "Gastgeber"-Tabelle.

-Oder geht diese nicht, da dort auch kdr. sind, welche nicht in die
Ausgabe sollen?
-Brauche ich eine Tabelle nur mit den Kundennummern, welche in die
Ausgabe Tabellen sollen?
Bernd-m ist offline   Mit Zitat antworten
Alt 23.08.2009, 19:31  
Benutzer
 
Registriert seit: 07.11.2007
Beiträge: 45
phpler befindet sich auf einem aufstrebenden Ast
Standard

Ich würde mir den Aufbau der Tabellen noch einmal überlegen: Was, wenn du 6, 18 oder 180 Monate zu verwalten hast? (wobei das derzeitige Layout ja nur 12 Monate unterscheiden kann) Willst du für jeden Monat eine Tabelle anlegen?

Mein Vorschlag wäre, die Tabellen lastminute und lastminute1 zusammen zu legen:
kdr | monat

Falls es entscheidend ist, welcher "Herkunft" der eingetragene Monat ist, könntest du eine dritte Spalte anfügen, um dort den "Herkunftswert" (zB 1 für "vonlast1" etc.) zu speichern:
kdr | monat | herkunft

Insgesamt dürfte damit die Abfrage und der Aufbau der Ausgabe sehr leicht zu gestalten sein.
phpler ist offline   Mit Zitat antworten
Alt 23.08.2009, 22:10  
Neuer Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 20
Bernd-m befindet sich auf einem aufstrebenden Ast
Standard

Die Tabellen sehen genau genommen so aus.

lastminute1
kundenr | vonlast1 | bislast1
varchar | DATE | DATE

lastminute2
kundenr | vonlast2 | bislast2
varchar | DATE | DATE

...
..
.

und eben die "Gastgeber"


Pro Kundennummer sollen bis zu 4 Angebote einstellbar sein.
Diese dann mit GROUP BY kundennummer pro "Gastgeber" zusammengefasst
ausgegeben werden sollen. und natürlich nach DATE sortiert.

Wenn das "bislast" Datum von einem Angebot in der Vergangenheit liegt,
wird (soll) dieser eintrag automatisch gelöscht.
Bernd-m ist offline   Mit Zitat antworten
Alt 23.08.2009, 22:14  
Neuer Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 20
Bernd-m befindet sich auf einem aufstrebenden Ast
Standard

Beispiel der SOLL ausgabe:

Hotel Post ---- 23.03.2009 - 12.09.2009
---------------- 01.09.2010 - 02.09.2010

Pension Müller -- 04.10.2009 - 08.02.2010
Bernd-m ist offline   Mit Zitat antworten
Alt 24.08.2009, 12:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Wie schon gesagt, lastminute und lastminute1 sind inhaltlich gleich. Es gibt keinen Grund für eine extra Tabelle. Unterscheidungen kannst Du mit einem Zusatzfeld lösen.

Code:
1800     |    feb  | 1
224      |    mar  | 1
4        |    dec  | 1
871      |    feb  | 1
1800     |    jan  | 2
4        |    nov  | 2
1823     |    feb  | 2
jan, feb etc. finde ich auch unglücklich. Integer-Werte (1-12) wären viel flexibler.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 24.08.2009, 13:11  
Neuer Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 20
Bernd-m befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es nun mit einer Mastertabelle mit den kundennummer der Lastminute Angebote gelöst.

Das Datum wird nicht per jan, feb... eingetragen sondern als 2009-01-03.....
Bernd-m ist offline   Mit Zitat antworten
Alt 24.08.2009, 13:48  
Neuer Benutzer
 
Registriert seit: 19.03.2009
Beiträge: 20
Bernd-m befindet sich auf einem aufstrebenden Ast
Standard

Nach dem ich nun deinen Vorschlag doch noch umgesetzt habe...
Darfst meinen Post von13:11 vergessen.

Hattest halt einfach recht.
vielen Dank




-- Nun habe ich aber noch das Problem die Daten zu sortieren.
Ich mach da mal was neues im PHP unter Order by DATE auf.
Bernd-m ist offline   Mit Zitat antworten
Alt 24.08.2009, 13:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Nein, besser unter Datenbanken. Und wen von uns dreien hat Dein Du jetzt angesprochen?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Problem mit DISTINCT & INNER JOIN fulltilt Datenbanken 1 12.02.2009 17:14
[Erledigt] Left join und inner join stefanjann Datenbanken 7 16.10.2008 15:45
MySQL UNION ALL mit LEFT JOIN? familyman Datenbanken 4 09.10.2008 12:15
[Erledigt] LEFT JOIN verliert Datensätze JudGer Datenbanken 4 05.10.2008 17:53
performance problem mit join leo Datenbanken 4 14.01.2008 22:31
Ein kleines Join Problem (MySQL) susi85 Datenbanken 12 12.12.2007 20:00
WHERE-Clause im Left Join cycap Datenbanken 2 06.11.2007 11:06
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
problem mit php 5/mysql 5 rieso PHP Tipps 2006 4 10.06.2006 09:42
JOIN problem 2 tabellen - zeile(tab1) zu spalte(tab2) Ministry Datenbanken 7 31.05.2006 10:31
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
Left outer join, timestamps php-newbie83 Datenbanken 29 27.04.2006 09:29
[Erledigt] LEFT JOIN Problem Datenbanken 11 21.03.2005 16:36
[Erledigt] left outer join mit bedingung Datenbanken 2 04.03.2005 00:52
den letzte(grösten) eintrag aus LEFT JOIN Datenbanken 2 24.07.2004 18:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
left join zeile fehlt, left join neuster eintrag, join arten, php left join problem, mysql \left outer join\ distinct

Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum