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 02-06-2010, 20:17
DumbleOpun
 Registrierter Benutzer
Links : Onlinestatus : DumbleOpun ist offline
Registriert seit: Jun 2010
Beiträge: 13
DumbleOpun befindet sich auf einem aufstrebenden Ast
Standard Tabellen miteinander verknüpfen... Brauche Hilfe...

Hallo!

Ich habe ein kleines Problemchen. Ich schildere erst einmal meinen Aufbau und ein paar PHP-Dinge.

Ich habe eine Datenbank ("DatenbankX") und darin befinden sich 3 Tabellen:

news_kategorien
- kategorie_id
- kategorie_title
- kategorie_kurzform

news_posts
- posts_id
- posts_title

news_kategorien_posts
- kategorie_id
- posts_title

Das sind jeweils die Tabellennamen und die Spaltennamen.

Nun übergebe ich in PHP per GET einen Wert aus news_kategorien, und zwar tabelle3kurzform.

Nun muss ich über die Kurzform (Feld "kategorie_kurzform") an die entsprechende id gelanden (Feld "kategorie_id"). Habe ich diese herausgefunden, kann ich nachschauen, ob es in news_kategorien_id einen oder mehrere Einträge gibt, in denen die ID aus news_kategorien in der Spalte kategorie_id vorkommt. Dann kann ich das Feld "posts_id" auslesen und in der news_posts nach der ID suchen...

...hört sich komplizierter an, als es ist. In der Tabelle "news_kategorien" sind eben alle Kategorien aufgelistet. In der Tabelle "news_posts" alle Postings und die Tabelle "news_kategorien_posts" verwaltet die Zugehörigkeit von Post und Kategorie.

Bisher bin ich immer wie folgt vorgegangen:

-> Ermitteln von $_GET
-> SQL-Abfrage nach der passenden ID zu "kategorien_kurzform"
-> SQL-Abfrage mit Tabelle "news_kategorien_posts" und alle "posts_id" in ein Array geschrieben.
-> Das Array "explodieren" lassen und einen String erstellt (for each... $string .= AND (id = x))
-> Neue SQL-Abfrage mit dem gerade erstellten String

D.h. ich habe drei Abfragen benötigt...

...gibt es da nicht auch eine einfachere Möglichkeit?

Ist ja nicht so, als wenn ich mich nicht selbst damit beschäftigt hätte, aber ich komme nicht weiter. Ohne es erklären zu können, habe ich folgende SQL-Abfrage generiert:

Code:
SELECT
   *
FROM
   news_posts
WHERE
   ($ermittelte_id = news_kategorien_posts.kategorie_id)
AND
   (news_posts.posts_id = news_kategorien_posts.post_id)
Da bekomme ich allerdings einen Fehler und ich muss vorher immer noch die ID der Kurzform auslesen...

...Hat jemand einen Hinweis für mich? Auch ein Link wird gerne angenommen (auch wenn ich schon viel gelesen habe)...
Mit Zitat antworten
  #2 (permalink)  
Alt 02-06-2010, 20:19
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Beschäftige dich mit JOINs.
http://aktuell.de.selfhtml.org/artikel/datenbanken/
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-06-2010, 20:24
DumbleOpun
 Registrierter Benutzer
Links : Onlinestatus : DumbleOpun ist offline
Registriert seit: Jun 2010
Beiträge: 13
DumbleOpun befindet sich auf einem aufstrebenden Ast
Standard

Hab ich ja... Derzeit sieht es so aus:

Code:
SELECT 
   *
FROM 
   news_posts as posts
INNER JOIN
   news_kategorien_posts as katid
ON
   (katid.kategorie_id = $ausgeleseneidderkurzform)
AND
   (posts.post_id = katid.post_id);
So funktioniert es auch... Nur muss ich immer noch die ID der Kurzform zuvor auslesen und in einen String speichern...
Mit Zitat antworten
  #4 (permalink)  
Alt 02-06-2010, 20:47
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von DumbleOpun Beitrag anzeigen
Nur muss ich immer noch die ID der Kurzform zuvor auslesen und in einen String speichern...
Nein, musst du nicht, du kannst alle drei Tabellen miteinander verknüpfen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 03-06-2010, 10:15
DumbleOpun
 Registrierter Benutzer
Links : Onlinestatus : DumbleOpun ist offline
Registriert seit: Jun 2010
Beiträge: 13
DumbleOpun befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
SELECT 
   
*
FROM 
   
(news_posts as posts
   INNER JOIN
      news_kategorien 
as kategorie   
      ON
         kategorie
.kategorie_kurzform "'.$_GET['kategoriekurzform'].'") ; 
INNER JOIN
   news_kategorien_posts 
as katid
ON
   
(katid.kategorie_id kategorie.kategorie_id)
AND
   (
posts.post_id katid.post_id); 
Soweit bin ich nun, und so weit funktioniert es auch.

Problem: Ich bekomme immer nur eine Kategorie mit ausgelesen, auch wenn "news_kategorien_posts"->"post_id" dort mehrmals vorhanden ist (weil ein Post z.B. in 2 oder mehreren Kategorien steckt)...

Gibt es dafür auch eine Lösung, oder muss ich dann noch auf 2 SQL-Abfragen hinaus?
Mit Zitat antworten
  #6 (permalink)  
Alt 03-06-2010, 11:10
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von DumbleOpun Beitrag anzeigen
Gibt es dafür auch eine Lösung, oder muss ich dann noch auf 2 SQL-Abfragen hinaus?
Sieh dir nochmal an, welche Bedingungen man in die on-Klausel eines Joins packt und welche in die where-Klausel gehören.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 03-06-2010, 11:26
DumbleOpun
 Registrierter Benutzer
Links : Onlinestatus : DumbleOpun ist offline
Registriert seit: Jun 2010
Beiträge: 13
DumbleOpun befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Sieh dir nochmal an, welche Bedingungen man in die on-Klausel eines Joins packt und welche in die where-Klausel gehören.
Sorry, aber hast du vielleicht noch einen Tipp?
Mit Zitat antworten
  #8 (permalink)  
Alt 03-06-2010, 11:45
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Mit on macht man in der Regel nichts anderes, als MySQL mitzuteilen, wie eine Tabelle mit einer anderen verknüpft werden muss. In deiner Abfrage hast du aber globale Kriterien da mit reingemischt die in die where-Klausel gehören.

Also: benutze on (mit o wie ein „Ehering“), um MySQL über die Beziehungen zwischen zwei Tabellen zu informieren und where, um irgendwelche anderen Bedingungen festzulegen (w wie das „Wetter”).
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
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
Alle Elemente eines Arrays miteinander verknüpfen webbies PHP Developer Forum 9 09-05-2008 16:13
2 Abfragen miteinander verknüpfen weissi SQL / Datenbanken 4 19-11-2006 19:15
Tabellen verknüpfen Adler SQL / Datenbanken 11 28-08-2003 13:04
2 Datenbank-Tabellen miteinander verknüpfen -> Probleme Mastereye3k SQL / Datenbanken 8 11-04-2003 11:04
Werte aus 2 Tabellen abfragen/Tabellen verknüpfen?! Steffen18 SQL / Datenbanken 7 03-01-2003 15:44

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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:17 Uhr.