Beispiele für Select bei mysql Author: Heinz Wember Augsburg, 07-Jan-2010 Abfrage eine Tabelle: SELECT `idp` , `vorname` , `nachname` , strassenr, plz , `ort` , telefon1 , email1, geburtsdatum FROM `personen` order by `nachname` , `vorname SELECT `idu` , `kurs` , `bemerkung` FROM kurseunbestaetigt order by kurs Abfrage zwei Tabellen SELECT mitglieder.beitragsgruppe , mitglieder.idperson, personen.vorname , personen.nachname , personen.strassenr, personen.plz , mitglieder.funktion, personen.ort , personen.telefon1 , personen.email1 , personen.geburtsdatum FROM personen , mitglieder where mitglieder.idperson = personen.idp ORDER BY mitglieder.beitragsgruppe desc , personen.nachname , personen.vorname SELECT teilnehmer.idperson, teilnehmer.buchungsnummer , personen.vorname , personen.nachname , personen.strassenr, personen.plz , personen.ort , personen.telefon1 , personen.email1, teilnehmer.funktion, teilnehmer.datumanmeldung, teilnehmer.bestaetigung FROM `personen` , `teilnehmer` where teilnehmer.buchungsnummer = '10.080' and teilnehmer.idperson = personen.idp ORDER BY personen.nachname , personen.vorname SELECT konten.idk , konten.idperson, personen.vorname , personen.nachname , personen.plz , personen.ort, konten.kontoinhaber, konten.blz, konten.kontonr, konten.deutscheskonto FROM `personen` , `konten` where konten.idperson = personen.idp order by personen.nachname , personen.vorname Tabellen mit join: SELECT teilnehmer.idperson, teilnehmer.buchungsnummer , personen.vorname , personen.nachname , personen.strassenr, personen.plz , personen.ort , personen.telefon1 , personen.email1, teilnehmer.funktion, teilnehmer.zimmermit FROM `teilnehmer` LEFT JOIN personen ON teilnehmer.zimmermit = personen.idp Generieren einer neuen Tabelle mit Select: drop table if exists teilnpers; create table teilnpers SELECT teilnehmer.idperson, teilnehmer.buchungsnummer , personen.vorname , personen.nachname , personen.strassenr, personen.plz , personen.ort , personen.telefon1 , personen.email1, teilnehmer.funktion, teilnehmer.datumanmeldung, teilnehmer.bestaetigung, teilnehmer.zimmermit FROM `teilnehmer` LEFT JOIN personen ON teilnehmer.idperson = personen.idp SELECT teilnpers.buchungsnummer AS bnr, teilnpers.vorname AS vn, teilnpers.nachname AS nn, teilnpers.strassenr AS st, teilnpers.plz AS pl, teilnpers.ort AS o, teilnpers.telefon1 AS t1, teilnpers.email1 AS e1, teilnpers.funktion AS f, teilnpers.datumanmeldung AS danm, teilnpers.bestaetigung AS best, teilnpers.zimmermit AS zmnr, personen.vorname AS zmvn, personen.nachname AS zmnn FROM teilnpers LEFT JOIN personen ON teilnpers.zimmermit = personen.idp Select mit 2 Join: SELECT personen.idp, mitglieder.idperson, personen.vorname , personen.nachname , personen.plz , personen.ort, personen.abbuchung, personen.idkonto, mitglieder.beitragsgruppe, beitraege.beitragsgruppe, beitraege.betrag FROM mitglieder LEFT JOIN personen ON mitglieder.idperson = personen.idp LEFT JOIN beitraege ON mitglieder.beitragsgruppe = beitraege.beitragsgruppe WHERE mitglieder.beitragsgruppe = 'E' OR mitglieder.beitragsgruppe = 'D' OR mitglieder.beitragsgruppe = 'F' OR mitglieder.beitragsgruppe = 'J' ORDER BY personen.nachname , personen.vorname Konsistenzprüfung: SELECT teilnehmer.idperson, personen.idp FROM teilnehmer LEFT JOIN personen ON teilnehmer.idperson = personen.idp WHERE personen.idp is NULL SELECT mitglieder.idperson, personen.idp FROM mitglieder LEFT JOIN personen ON mitglieder.idperson = personen.idp WHERE personen.idp is NULL SELECT teilnehmer.gruppe, teilnehmer.idt, kostenveranstaltung.betrag FROM teilnehmer LEFT JOIN kostenveranstaltung ON teilnehmer.gruppe = kostenveranstaltung.gruppe WHERE kostenveranstaltung.betrag IS NULL SELECT teilnehmer.buchungsnummer AS bnr, teilnehmer.idt, veranstaltungen.buchungsnummer FROM teilnehmer LEFT JOIN veranstaltungen ON teilnehmer.buchungsnummer = veranstaltungen.buchungsnummer WHERE veranstaltungen.buchungsnummer IS NULL SELECT personen.idkonto AS knr, personen.abbuchung, personen.idp, konten.idk FROM personen LEFT JOIN konten ON personen.idkonto = konten.idk WHERE personen.abbuchung = 'j' AND konten.kontonr IS NULL Anzahl der Hochzeiten pro 25 Jahre DROP TABLE IF EXISTS temp; CREATE TABLE temp SELECT count(*) AS summeanzahl, jahr FROM hochzeiten GROUP BY floor(jahr/25)*25; SELECT FLOOR(jahr/25)*25 AS jahr1, summeanzahl FROM temp; Select Einzelsätze und Summenbildung: SELECT teilnehmer.idperson , teilnehmer.buchungsnummer, personen.vorname , personen.nachname , personen.plz , personen.ort, teilnehmer.gruppe, kostenveranstaltung.betrag, personen.abbuchung FROM teilnehmer , personen, kostenveranstaltung WHERE teilnehmer.buchungsnummer = '10.080' AND teilnehmer.idperson = personen.idp AND teilnehmer.gruppe = kostenveranstaltung.gruppe AND teilnehmer.bestaetigung = 'ok' ORDER BY personen.nachname , personen.vorname SELECT sum( kostenveranstaltung.betrag ) AS sumbetrag FROM teilnehmer , personen, kostenveranstaltung WHERE teilnehmer.buchungsnummer = '10.080' AND teilnehmer.idperson = personen.idp AND teilnehmer.gruppe = kostenveranstaltung.gruppe AND teilnehmer.bestaetigung = 'ok' ORDER BY personen.nachname , personen.vorname