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 12-12-2006, 12:10
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL 4.0] Zwei Datensätze mit einem Datensatz verknüpfen?

Hi,

ich lasse auf meiner Homepage Seminarveranstaltungen ausgeben.
Ich habe 4 Tabellen:

_events_times
_events_locations
_events_details
_person

Die Tabelle _events_times ist wie folgt aufgebaut:

CREATE TABLE `_events_times` (
`id` int(11) NOT NULL auto_increment,
`id_details` int(11) NOT NULL default '0',
`id_location` int(11) NOT NULL default '0',
`active` char(1) NOT NULL default 'y',
`id_referent` int(11) default NULL,
`date_post` timestamp(14) NOT NULL,
`date_s` date NOT NULL default '0000-00-00',
`date_e` date NOT NULL default '0000-00-00',
`time_s` time default '00:00:00',
`time_e` time default '00:00:00',
`lang` varchar(12) NOT NULL default '',
`fee` tinytext,
`id_contact_person` int(50) NOT NULL default '22',
`note` tinytext,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=295 ;


Nun habe ich folgendes Problem:
Die Tabelle _events_times hat einmal ein Attribut id_referent und ein Attribut id_contact_person. Das sind 2 verschiedene Personen (2 verschiedene Datensätze) in Tabelle _person. Ist es möglich beide mit einer Abfrage zu bekommen? Keine Ahnung wie das gehen soll, denn die müssten dann ja auch noch unterschiedliche Namen bekommen. Bräuchte da Hilfe.
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 12-12-2006, 12:41
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

2x nen LEFT JOIN auf _person (1x referent_id=perso_id + 1x contact_id=perso_id) geht nicht?
__________________
Kissolino.com
Mit Zitat antworten
  #3 (permalink)  
Alt 12-12-2006, 12:47
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, die Idee hatte ich auch schon, aber wie soll das gehen?
Wie unterscheide ich dann bsw. zwischen der Email Addy des Referenten und der der Kontakt Person? Die beiden sind ja in der gleichen Tabelle und haben die Spalten haben die gleichen Attributnamen. "AS" kann ich da doch nicht verwenden...
Mit Zitat antworten
  #4 (permalink)  
Alt 12-12-2006, 12:56
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
"AS" kann ich da doch nicht verwenden...
wieso nicht? du kannst jeder explizit angesprochenen spalte einen alias verpassen. halt nur blöd, wenn man faul ist und alles per * selektiert
__________________
Kissolino.com
Mit Zitat antworten
  #5 (permalink)  
Alt 12-12-2006, 13:00
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein faul nicht, aber es geht trotzdem nicht:

PHP-Code:
$res mysql_query("
    SELECT
        c.id, c.date_e, c.date_s, c.time_s, c.time_e, c.note AS note_times,
        b.at, b.street, b.building, b.zip, b.city, b.country, 
        a.headline, a.summary, a.target, a.fee, a.info, a.anmeldung, a.infolink, 
        a.note AS note_details, d.name_f, d.name_l, d.email
    FROM
        _events_details a, _events_locations b, _events_times c, _person d
    LEFT JOIN _person
        ON c.id_referent = d.id
    LEFT JOIN _person
        ON c.id_contact_person = d.id
    WHERE
        c.lang = '"
.$language."'
    AND
        c.date_s BETWEEN CURDATE() AND ADDDATE(CURDATE(), INTERVAL 200 DAY)
    AND 
        c.id_details = a.id_details
    AND
        c.id_location = b.id_location 
    AND
        c.active = 'y'
    ORDER BY 
        c.date_s ASC"
); 

Geändert von compuboy1010 (12-12-2006 um 13:12 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 12-12-2006, 13:13
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
Nein faul nicht, aber es geht trotzdem nicht:

PHP-Code:
    SELECT
        
....
    
FROM
        _events_times c
    LEFT JOIN _person p1 
        ON c
.id_referent p1.id
    LEFT JOIN _person p2
        ON c
.id_contact_person p2.id
    LEFT JOIN _events_details a
        ON 
...
    
LEFT JOIN _events_locations b 
        ON 
...
    
WHERE
        
... 
mir würde das so besser gefallen (ob LEFT, RIGHT, INNER JOIN musst du selber sehen).
__________________
Kissolino.com
Mit Zitat antworten
  #7 (permalink)  
Alt 12-12-2006, 13:30
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ahhh, interessant....!



OK, ich habe mich mal versucht:

PHP-Code:
$res mysql_query("
    SELECT
        c.id, c.date_e, c.date_s, c.time_s, c.time_e, c.note AS note_times,
        b.at, b.street, b.building, b.zip, b.city, b.country, 
        a.headline, a.summary, a.target, a.fee, a.info, a.anmeldung, a.infolink, 
        a.note AS note_details, p1.name_f, p1.name_l, p1.email, p2.name_f, p2.name_l, p2.email
    FROM
        _events_times c
    LEFT JOIN _person p1 
        ON c.id_referent = p1.id
    LEFT JOIN _person p2
        ON c.id_contact_person = p2.id
    LEFT JOIN _events_details a
        ON c.id_details = a.id_details
    LEFT JOIN _events_locations b 
        ON c.id_location = b.id_location
    WHERE        
        c.lang = '"
.$language."'         
    AND
        c.date_s BETWEEN CURDATE() AND ADDDATE(CURDATE(), INTERVAL 200 DAY)
    ORDER BY 
        c.date_s ASC"
); 
Nun stellt sich mir die Frage, wenn es so funzen sollte - muss gleich nochmal drüberschauen - wie ich das denn in PHP ausgeben könnte!

Wie würde ich nun email aus p1 und email aus p2 ausgeben?
Ist mir schleierhaft!
Mit Zitat antworten
  #8 (permalink)  
Alt 12-12-2006, 13:35
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
Wie würde ich nun email aus p1 und email aus p2 ausgeben?
Ist mir schleierhaft!
ALIAS vergeben! und die query mal von hand im phpmyadmin testen. print_r() kann auch hilfreich sein. kann doch nicht so schwer sein, oder?
__________________
Kissolino.com
Mit Zitat antworten
  #9 (permalink)  
Alt 12-12-2006, 13:40
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
kann doch nicht so schwer sein, oder?
Das ist relativ, wenn man sich nicht jeden Tag mit SQL beschäftigt dann schon!

Das Problem ist, dass ich nicht weiß an welcher Stelle ich die Aliase vergeben soll.

Geändert von compuboy1010 (12-12-2006 um 13:46 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 12-12-2006, 13:52
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von compuboy1010
Das Problem ist, dass ich nicht weiß an welcher Stelle ich die Aliase vergeben soll.
schwere geburt mit dir. alle doppelt benamten spalten werfen einen mysql_error. wenn du also 2x "email" holst, bringst du mysql durcheinander, also für min. 1 von beiden einen alias verwenden.
__________________
Kissolino.com
Mit Zitat antworten
  #11 (permalink)  
Alt 12-12-2006, 13:56
compuboy1010
 Member
Links : Onlinestatus : compuboy1010 ist offline
Registriert seit: Jul 2003
Ort: Deutschland
Beiträge: 474
compuboy1010 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Super!!!

Es klappt nun. Du warst eine sehr große Hilfe!!

Vielen Dank!!

Geändert von compuboy1010 (12-12-2006 um 14:53 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


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

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

10 Gründe, warum das Todesstern-Projekt gescheitert ist
10 Gründe, warum das Todesstern-Projekt gescheitert istDie Todesstern-Projekte sind spektakulär gescheitert. Lernen Sie von den Fehlern des Imperiums und bewahren Sie Ihre Projekte davor, der dunklen Seite der Macht zu verfallen!

24.11.2020 | Berni

Projektmanagement-Grundlagen Was ist ein PMO?
Projektmanagement-Grundlagen Was ist ein PMO?In unserer Infografik erfahrt ihr es.

02.11.2020 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

21.10.2020 Berni | Kategorie: PHP/ Anzeigenmarkt
Sendeplan Script inkl. Wunsch- und Grußbox + Kick-System + Bewerbungssystem

Das professionelle Sendeplan PHP Script inkl. Wunsch- und Grußbox + Kick-System für dein Webradio. Der übersichtliche Sendeplan bietet deinen Moderatoren und Zuhörern die perfekte Übersicht der aktuellen Shows! Du kannst nicht nur Sendungen eintragen, s

20.10.2020 drcomputer | Kategorie: PHP/ Web Radio
Newsmanager 2

Der Newsmanager 2 ist sehr Vielfältig und kann News schreiben, Newsletter versenden und RSS Feeds in einem erzeugen.

20.10.2020 Stephan_1972 | Kategorie: PHP/ News
 Alle PHP Scripte anzeigen

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